2009-04-24 17 views
6

Ich möchte eine gluSphere um einen festen Punkt in einer kreisförmigen Bewegung, wie ein Planet drehen um die Sonne drehen.OpenGL um eine Stelle drehen

Wäre es am besten, glRotatef oder glTranslate zu verwenden? Wenn ja, in welcher Reihenfolge soll ich sie anrufen?

Antwort

4

Sie werden ein wenig von beidem zu tun haben:

  • Sicherstellen, dass die gluSphere ist „mit Blick auf“ den festen Punkt, so dass zum Zentrum seiner Bahn vorwärts in Bezug auf die Kugel zu übersetzen
  • glTranslatef die gluSphere nach vorn auf den Punkt bringt Sie näher, um die Sie es
  • drehen möchtendie Richtung wollen Sie die Kugel
  • glTranslatef rückwärts genau so weit in den Orbit, wie Sie vorwärts ging

Auf diese Weise Ihre Kugel mit dem gleichen Abstand von der Mitte bleibt, wird aber in einer schönen Umlaufbahn „um“ übersetzt .

+0

Prost, Spot auf! – user64392

-2

glRotatef multipliziert die aktuelle Matrix mit einer Rotationsmatrix. Dies kann (mit dem richtigen Vektor) tun, was Sie versuchen.

glTranslatef wird die aktuelle Matrix mit einer Translationsmatrix multiplizieren, die das Objekt effektiv "verschiebt", nicht rotiert, also wird es nicht das sein, was Sie wollen.

+0

Also für eine Kreisbewegung, was glRotatef sollte ich verwenden, um einen Sollwert zu drehen? – user64392

+0

Ich denke es ist wahr zu sagen, dass er einen von jedem benötigt - übersetze das Objekt vom Ursprung weg und rotiere dann um den Ursprung. (wo 'Herkunft' ist das Zentrum, das Sie drehen möchten) –

2

Übersetzen vom Zentrum entfernt und dann drehen den ganzen Weg