Chcę przesunąć jeden obiekt (kropkę) po ścieżce kołowej. Jak zmienić współrzędne X i Y, aby to osiągnąć?
Chcę przesunąć jeden obiekt (kropkę) po ścieżce kołowej. Jak zmienić współrzędne X i Y, aby to osiągnąć?
Odpowiedzi:
Możesz to zrobić za pomocą prostej matematyki:
X := originX + cos(angle)*radius;
Y := originY + sin(angle)*radius;
(originX, originY) to środek twojego koła. promień to jego promień. to jest to!
Działa to, ponieważ sinus i cosinus są matematycznie powiązane z okręgiem jednostki .
Źródło zdjęcia : LucasVB (praca własna) [domena publiczna], za pośrednictwem Wikimedia Commons . (Skalowane do 70%.)
Możesz użyć równania parametrycznego oznaczonego przez Kroma. Aby zrozumieć, dlaczego zastosowaliśmy tę formułę, musisz zrozumieć, jakie jest równanie. To równanie pochodzi od parametrycznego równania okręgu .
Biorąc pod uwagę, że okrąg jest rysowany środkiem na początku (O), jak pokazano na poniższym schemacie
Jeśli weźmiemy punkt „p” na obwodzie koła, mający promień r.
Niech kąt wykonany przez OP (początek do p) będzie równy θ. Niech odległość p od osi x będzie y Niech odległość p od osi y będzie x
Korzystając z powyższych założeń otrzymujemy trójkąt, jak pokazano poniżej:
Teraz wiemy, że cos θ = podstawa / przeciwprostokątna i sin θ = prostopadła / przeciwprostokątna
co daje nam cos θ = x / r i sin θ = y / r
:: x = r * cos θ iy = r * sin θ
Ale jeśli okrąg nie jest na początku, a raczej w (a, b), możemy powiedzieć, że środek koła jest przesunięty
jednostki w osi x
jednostki b w osi y
Więc dla takiego okręgu możemy odpowiednio zmienić równanie parametryczne, dodając przesunięcie na osi x i y, dając nam następujące równania:
x = a + (r * cos θ)
y = b + (r * sin θ)
Gdzie a & b są współrzędnymi x, y środka koła.
W związku z tym znaleźliśmy xiy współrzędnych punktu na obwodzie koła o promieniu r
Jest jeszcze jedna sztuczka, w której używasz formuł sin (x + a) i cos (x + a), i która pozwala ci obliczyć sin (a) i cos (a) - jest to kąt, o który chcesz się poruszać z aktualnej pozycji - tylko raz i po prostu pomnóż i uzupełnij na każdym kroku.
sin (x + a) = sin (x) * cos (a) + cos (x) * sin (a), iirc.
Oczywiście zakłada to stałą prędkość kątową.
Uważaj jednak na ograniczoną precyzję arytmetyczną. Obserwowałem w przeszłości „okrągły” ruch realizowany w ten sposób, który rysowałby spiralę w wyniku sporadycznego zaokrąglania w dół powtarzanego w czasie. Konieczne może być zresetowanie położenia do (x0, y0) po każdym obrocie.