[débutant] Axe de rotation caméra [Résolu]

Signaler
Messages postés
3
Date d'inscription
samedi 15 janvier 2005
Statut
Membre
Dernière intervention
27 février 2005
-
Messages postés
3
Date d'inscription
samedi 15 janvier 2005
Statut
Membre
Dernière intervention
27 février 2005
-
Bonjour,





Actuellement sur un (petit) jeu
de stratégie qui se déroule sur un damier (imaginez-vous un jeu
d'échec), je désirerai changer l'axe de rotation de la caméra :


Je voudrais que ma caméra puisse tourner autour du damier (donc l'axe de
rotation serait le centre du damier). Pour le moment, ma caméra
tourne autour du coin inférieur gauche du damier.





Voici ci-dessous la fonction appelée par le callback gluDisplayFunc :

, 		----
void affichageDamier()

{

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glLoadIdentity();

// positionnement de la caméra

gluLookAt(opg->posX,opg->posY,opg->posZ,opg->ciblX,opg->ciblY,opg->ciblZ,0,0,1);

glRotatef(-angley, 0.0, 0.0, 1.0);  // PROBLEME DE CENTRE DE GRAVITE MAL PLACE !!!

// affichage du damier et de ses occupants

opg->affichage(deroulement->surfaceDeJeu,deroulement,mouvement);

glutPostRedisplay();

glutSwapBuffers();

}







Merci de votre aide.

2 réponses

Messages postés
3
Date d'inscription
samedi 15 janvier 2005
Statut
Membre
Dernière intervention
27 février 2005

J'étais en effet parti sur ce principe mais j'avais vu dans un programme qu'il partait sur la notion de rotatef . Enfin, bon bref, je suis donc revenu à la bonne vieille trigonométrie.

Petite précision sur la solution, je pense que celle ci-dessous était plus convenable :


  opg->posX  = CENTRE_DAMIER_X + ( RAYON_DAMIER * sin(angle* PI/180) );

  opg->posY  = CENTRE_DAMIER_Y - ( RAYON_DAMIER * cos(angle* PI/180) );

  opg->posZ  = CENTRE_DAMIER_Z  + 10;

  opg->ciblX  = CENTRE_DAMIER_X;

  opg->ciblY  = CENTRE_DAMIER_Y;

  opg->ciblZ  =  CENTRE_DAMIER_Z;



  gluLookAt(opg->posX, opg->posY, opg->posZ, opg->ciblX, opg->ciblY, opg->ciblZ,0,0,1);





Merci de ton aide.
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Ben ta juste a changer la position avec gluLookAt.




glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);


glLoadIdentity();





// positionnement de la caméra

gluLookAt(centre_plateau_x + rayon * cos(angle_de_rotation) ,
centre_plateau_y + rayon*sin(angle_de_rotation), centre_plateau_z,
centre_plateau_x,
centre_plateau_y
,
centre_plateau_z
,0,0,1);



avec le rayon un peu plus grand que la moitié du coté de ton plateau.

Ta pas besoin d'utiliser de fonction rotatef pour faire tourner ta caméra.