Цитирование по формуле, которая описывает спираль для генерации координат XY
Я пытаюсь создать спиральную галактику в виде xy (2D) координат, но математика не моя сильная манера.
Я извлек следующее из отличный источник для спиралей:
Радиус r (t) и угол t пропорциональны простейшая спираль, спираль Архимеда. Поэтому уравнение имеет вид:
(3) Полярное уравнение: r (t) = at [a постоянное].
Из этого следует, что (2) Форма параметра: x (t) = at cos (t), y (t) = at sin (t),
(1) Центральный уравнение: x² + y² = a² [arc tan (y/x)] ².
Этот вопрос коснулся поколения галактик, но ответы были рассеяны и все еще слишком сложны для того, что мне нужно (иначе, мой умственный ум не может понимайте их).
По сути, мне нужно сделать петлю через спиральную формулу в PHP ~ 5000 раз для создания точек в сетке 513x513 XY. Размер сетки и количество необходимых очков могут измениться в будущем. Еще лучше было бы взвесить эти точки относительно происхождения спиралей как по частоте, так и от того, как далеко они могут отклониться от точной математической формулы, подобно тому, как выглядит галактика.
В этой математической статье описывается формула, описывающая структуру спиральных галактик.
То, что полностью меня теряет, - это перевести математическую формулу на то, что я могу пропустить в PHP!
Ответы
Ответ 1
// a is 5 here
function x($t){ return 5 * $t * cos($t); }
function y($t){ return 5 * $t * sin($t); }
for ($t = 0; $t < 50; $t += 0.01) {
$xyPoint = array(x($t), y($t));
// draw it
}
когда вы сталкиваетесь с такими параметрическими уравнениями, как правило, для переменной параметра t
, что означает время. Таким образом, вы можете подумать о подключении возрастающих значений t к функциям и получению координат, которые постепенно меняются по мере увеличения времени.
вам нужно будет выбрать свои собственные значения для a, диапазон t и шаг шага приращения t. Это зависит только от ваших требований. как cos(), так и sin() имеют максимальное значение 1, если это поможет вам определить подходящие значения для a и t в зависимости от размера холста