Eliptyczna/kołowa orbita w OpenGL

0

Witam, ostatnio uczę się OpenGL i zamierzam zrobić... Kosmos? Jak można tak to nazwać. Mam słońce, które obraca się wokół własnej osi. Teraz potrzebuje planet. Tu mam problem...

Na razie planety poruszają się tylko wokół osi X i Y na płaszczyźnie 2D, więc zapominamy o głębi. Załóżmy, że jest to w 2D.

user image

Czerwone koło to zamierzona orbita obiektu. Jak ją zrobić? Jak zrobię "X i Y += 1" to będę miał kwadrat, a jak zrobię "X += 1/2 i Y += 1" to wyjdzie mi 'diament?'.

Można powiedzieć, że obiekt ma się poruszać po obwodzie koła.
Potrzebuję pomocy jak takie coś zrobić? (Java/OpenGL)

0

Przesunięcie wyliczasz z odpowiednich funkcji trygonometrycznych

0

Nie wiem, czy o to Ci chodzi...ale możesz użyć trygonometrycznego równania na koło:
eaf322f7fce919d0840cedfe2476ebb3.png

0

Tako jakby działa... Obraca się po obwodzie, ale szybko i wokół punktu. Nie wiem czym jest to spowodowane, możliwe, że wynika to z tego, iż punkt startowy to 0, a r = 0.5?
Z działań wychodzi mi, że:

x = 0 + (0.5 * cos rtri);
y = 0 + (0.5 * sin rtri);
rtri += 0.2f;

rtri jest to kąt, przydatny przy funkcji glRotatef(rtri, 0, 0, 0.1f);

0

Spowolnij rendering albo zmiejsz znacznie kąt o jaki przesuwasz obiekt.

0

Przecież OpenGL ma wbudowane funkcje do transformacji — takie coś się robi przez rotację (glRotate), translację (glTranslate) i odpowiednie manipulowanie układem współrzędnych (glPushMatrix, glPopMatrix, ...).
Nie trzeba nic liczyć ręcznie...

Polecam przećwiczenie prostych przekształceń.

1 użytkowników online, w tym zalogowanych: 0, gości: 1