Kiedy chcę przesunąć obiekt wokół punktu, robię:
point.x *= cosf(timer.timeElapsed);
point.y *= sinf(timer.timeElapsed);
Jak sprawić, by punkt poruszał się po trajektorii ósemki lub znaku nieskończoności?
mathematics
movement
trajectory
Jewhen
źródło
źródło
Jak zauważa Marton, istnieje kilka „ośmiu” krzywych, które mogą pasować do twoich potrzeb. Być może najprostszym jest lemniscate Gerono , który ma parametryzację:
i wygląda następująco:
Jednak liscisate Bernoulliego może być przyjemniejsze wizualnie; ma parametryzację bardzo podobną do lemniscate Gerono, z tym wyjątkiem, że obie osie są skalowane przez współczynnik
1/(sin(t)^2 + 1) = 2/(3 - cos(2*t))
:To wygląda tak:
(Animacje wykonane przy pomocy Maple 13, skompresowane przy pomocy GIFsicle.)
źródło
Losowo znalazłem inny, używając tej formuły:
Zgodnie z wykreśleniem Wolfram Alpha :
źródło
t
. Polecam dołączenie opisu sposobu wykorzystania tej formuły do pozycjonowania poruszającego się obiektu w czasie.Iloczyn odległości od dowolnego punktu na tej krzywej do (-1, 0) i do (1,0) jest stały i wynosi 1.
źródło