Bonjour!
J'essaie d'écrire une caméra, mais j'ai un problème pour effectuer une rotation.
J'aimerais une rotation qui:
-vise toujours le point (0,0,0)
-reste à la même distance du point (0,0,0)
-voyage sur le cercle du plan définit par l'axe y et la position de la caméra
Je l'est écrite, elle marche, mais elle refuse de faire un tour complet.
Le problème vient certainement de l'acos(...)(ou peut-être de atan2(...)).
C'est un problème de trigo mais je me suis perdue... à l'aide!
Voici ma fonction:
(angle=0.05 et sens=1 ou -1)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 void Camera::rotationvert(int sens) { double theta(0), phi(0), r(0); r = sqrt((xpos*xpos) + (ypos*ypos) + (zpos*zpos)); phi = acos(ypos/r); theta = atan2(xpos,zpos); phi += sens*angle; zpos = r*sin(phi)*cos(theta); xpos = r*sin(phi)*sin(theta); ypos = r*cos(phi); }
Partager