Як я можу перемістити об'єкт за траєкторією "нескінченності" чи "цифри 8"?


28

Коли я хочу перемістити об'єкт навколо точки, я роблю:

    point.x *= cosf(timer.timeElapsed);
    point.y *= sinf(timer.timeElapsed);

Як зробити рух по точці по восьми або знаковій траєкторії нескінченності?

Відповіді:


24

2
Відповіді мають бути самостійними, зовнішні посилання можуть загинути в один прекрасний день, і ця відповідь буде марною. Слід навести важливі біти із наданих вами посилань.
Брайан Х.

61

Як зазначає Мартон, є кілька кривих "цифра у вісім", які можуть відповідати вашим потребам. Мабуть, найпростішим є лемнікат Героно , який має параметризацію:

x = cos(t);
y = sin(2*t) / 2;

і виглядає приблизно так:

Леніскат анімації Gerono

Однак леміскат Бернуллі може бути візуально приємнішим; вона має параметризацію, дуже схожу на лемніскат Героно, за винятком того, що обидві осі масштабуються коефіцієнтом 1/(sin(t)^2 + 1) = 2/(3 - cos(2*t)):

scale = 2 / (3 - cos(2*t));
x = scale * cos(t);
y = scale * sin(2*t) / 2;

Це виглядає приблизно так:

Леніскат анімації Бернуллі

(Анімації, зроблені Maple 13, стиснуті GIFsicle.)


Дякую всім за вашу підтримку, яка заслужила мені свій перший золотий знак тут на гамедеві! :-)
Ілмарі Каронен

1
+1 - не лише для розміщення посилань, а й формул та графіки (із джерелами).
rootlocus

2
Так і має бути прийнятою відповіддю.
Брайан Х.

-1

Я випадковим чином знайшов ще одну, використовуючи цю формулу:

x2=y2+0.1x2.8

Як побудував Вольфрам Альфа :

половина символу нескінченності


На відміну від інших відповідей, ця наразі не представлена ​​в параметричній формі, що дозволяє нам легко крокувати вперед з часом t. Я рекомендую включити опис того, як ви використовували б цю формулу для розташування рухомого об’єкта за часом.
DMGregory

-4

((x+1)2+y2)((x1)2+y2)=1

половина символу нескінченності

Добуток відстаней від будь-якої точки на цій кривій до (-1, 0) та до (1,0) є постійним і дорівнює 1.


4
Ця відповідь надає формулу, що моделює таку криву, але не метод "переміщення об'єкта" таким чином, щоб він виходив за цією кривою. Спробуйте розглянути відповідь, щоб вказати, як ви використовували б цю математику для переміщення предмета в грі.
DMGregory
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.