Eliptyczna/kołowa orbita w OpenGL

Eliptyczna/kołowa orbita w OpenGL
TE
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 3 lata
  • Postów:61
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)

Sopelek
  • Rejestracja:prawie 13 lat
  • Ostatnio:ponad 8 lat
  • Lokalizacja:Kraków
  • Postów:467
0

Przesunięcie wyliczasz z odpowiednich funkcji trygonometrycznych

satirev
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 4 lata
0

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

TE
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 3 lata
  • Postów:61
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:

Kopiuj
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);

satirev
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 4 lata
0

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

Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:mniej niż minuta
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ń.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.