2009-04-24 5 views
6

Je veux faire tourner un gluSphere autour d'un point fixe dans un mouvement circulaire, comme une planète faisant le tour du soleil.OpenGL tourne autour d'un point

Serait-il préférable d'utiliser glRotatef ou glTranslate? Si oui, dans quel ordre dois-je les appeler? GlRotatef va multiplier la matrice actuelle par une matrice de rotation.

Répondre

4

Vous aurez à faire un peu des deux:

  • Assurez-vous que le gluSphere est « face » du point fixe, de sorte que traduire en avant par rapport à la sphère vous met plus au centre de son orbite
  • glTranslatef le gluSphere avec impatience le point autour duquel vous voulez faire tourner
  • glRotatef la direction que vous voulez la sphère en orbite
  • glTranslatef arrière aussi loin que vous êtes allé en avant

De cette façon, votre sphère reste la même distance du centre, mais est traduite « autour » sur une orbite agréable .

+0

Salutations! – user64392

-2

Cela peut (donné le bon vecteur) faire ce que vous essayez. GlTranslatef va multiplier la matrice actuelle par une matrice de traduction, ce qui aurait pour effet de "déplacer" l'objet, pas de le faire pivoter, donc ce ne sera pas ce que vous voulez.

+0

Donc, pour un mouvement circulaire, quel glRotatef devrais-je utiliser pour tourner autour d'un point de consigne? – user64392

+0

Je pense qu'il est vrai de dire qu'il a besoin d'un de chaque - traduire l'objet à l'origine, puis tourner autour de l'origine. (où 'origine' est le centre que vous voulez faire pivoter) –

2

Traduire du centre, puis tournez tout le chemin

Questions connexes