Bonjour,
* Je réalise actuellement un labyrinthe en 3D sous Glut dans lequel on doit se déplacer.
J'ai eu beau regarder les différentes sources sur ce sujet, je n'ai toujours pas compris le principe des déplacements.
* Les déplacements sont : soit j'avance/recule soit je tourne soit les deux.
* Pour cela j'utilise la fonction gluLookAt en sachant que la hauteur (axe Z) ne varie pas
(z = 0.5).
d'où : gluLookAt(posCamX,posCamY,0.5,ptVueX,ptVueY,0.5,0,0,1.0);
* pour avancer :
pas=0.05;
posCamX = posCamX + pas*(ptVueX-posCamX);
posCamY = posCamY + pas*(ptVueY-posCamY);
ptVueX = ptVueX + pas*(ptVueX-posCamX);
ptVueY = ptVueY + pas*(ptVueY-posCamY);
=> équivaut à une translation de la position et du point de vue en gardant la même distance entre les 2 points
* pour reculer : idem avec - au lieu du +
* pour tourner :
angle=PI/50;
ptVueX = posCamX + (ptVueX-posCamX)*cos(angle) - (ptVueY-posCamY)*sin(angle);
ptVueY = posCamY + (ptVueX-posCamX)*sin(angle) + (ptVueY-posCamY)*cos(angle);
=> équivaut à une rotation de centre posCam
En avançant/reculant, ça marche mais au bout d'un moment, c'est comme si le pas de déplacement diminuait...(peu importe sa valeur)

Et pour la rotation, ça marche un peu comme ça veut...

Je sais que tout ça c'est des maths mais les maths et moi ça fait 4...

Si vous avez ne serait-ce qu'une ombre d'explication n'hésitez pas!!
Merci d'avance!!


