Я пытаюсь заставить некоторые объекты, скажем, 12, непрерывно вращаться по траектории эллипса в обработке.Я получил эскиз, который вращается по кругу, и я хочу, чтобы он вращался по эллипсу.У меня есть какой-то указатель из форума обработки, но код указателя отличается от кода, который я опубликовал, и я пока не мог понять (слаб в тригонометрии).
Я немного погуглил и нашел сообщение, пытаясьдобиться этого с помощью этого алгоритма:
Вам необходимо определить свой эллипс с несколькими параметрами:
x, y: center of the ellipse
a, b: semimajor and semiminor axes
Если вы хотите двигаться по эллипсам, это означает, что вы меняете уголмежду основными осями и вашим положением на эллипсе.Давайте назовем этот угол альфа.
Ваша позиция (X, Y):
X = x + (a * Math.cos(alpha));
Y = y + (b * Math.sin(alpha));
Чтобы двигаться влево или вправо, вам нужно увеличить / уменьшить альфа, а затем пересчитать свою позицию.Источник: http://answers.unity3d.com/questions/27620/move-object-allong-an-ellipsoid-path.html
Как мне интегрировать это в мой эскиз?Спасибо.
Вот мой набросок:
void setup()
{
size(1024, 768);
textFont(createFont("Arial", 30));
}
void draw()
{
background(0);
stroke(255);
int cx = 500;
int cy = 350;
int r = 300; //radius of the circle
float t = millis()/4000.0f; //increase to slow down the movement
ellipse(cx, cy, 5, 5);
for (int i = 1 ; i <= 12; i++) {
t = t + 100;
int x = (int)(cx + r * cos(t));
int y = (int)(cy + r * sin(t));
line(cx, cy, x, y);
textSize(30);
text(i, x, y);
if (i == 10) {
textSize(15);
text("x: " + x + " y: " + y, x - 50, y - 20);
}
}
}