2009-04-24 88 views
6

Quiero rotar un gluSphere alrededor de un punto fijo en un movimiento circular, como un planeta que gira alrededor del sol.OpenGL girar alrededor de un punto

¿Sería mejor usar glRotatef o glTranslate? Si es así, ¿en qué orden debo llamarlos?

Respuesta

4

Vas a tener que hacer un poco de ambos:

  • Asegúrese de que el gluSphere "enfrenta" el punto fijo, de manera que traduciendo hacia delante con respecto a la esfera se pone más cerca del centro de su órbita
  • glTranslatef la gluSphere hacia adelante hasta el punto en torno al cual desea que gire
  • glRotatef la dirección que desea la esfera en orbitar
  • glTranslatef hacia atrás tan lejos como se adelantó

esta manera, su ámbito se mantiene la misma distancia del centro, pero se traduce "en torno" en una bonita órbita .

+0

Saludos, perfecto! – user64392

-2

glRotatef multiplicará la matriz actual por una matriz de rotación. Esto puede (dado el vector correcto) hacer lo que estás intentando.

glTranslatef multiplicará la matriz actual por una matriz de traducción, que efectivamente "moverá" el objeto, no lo rotará, por lo que no será lo que desea.

+0

Entonces, para un movimiento circular, ¿qué glRotatef debería usar para rotar alrededor de un punto establecido? – user64392

+0

Creo que es cierto que necesita uno de cada uno: traduzca el objeto fuera del origen y luego gire sobre el origen. (donde 'origen' es el centro por el que desea rotar) –

2

Traducir lejos del centro y luego girar todo el camino

Cuestiones relacionadas