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:

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);
 
}
(angle=0.05 et sens=1 ou -1)