java deux 3d - Trouver un angle signé entre des vecteurs
1
Answers
Ce que vous voulez utiliser est souvent appelé "produit à points", c'est-à-dire trouver le vecteur perpendiculaire à l'un des vecteurs, puis trouver le produit scalaire avec l'autre vecteur.
if(a.x*b.y - a.y*b.x < 0)
angle = -angle;
Vous pouvez aussi faire ceci:
angle = atan2( a.x*b.y - a.y*b.x, a.x*b.x + a.y*b.y );
plan 2d segments
Comment trouvez-vous l'angle thêta signé du vecteur a à b?
Et oui, je sais que theta = arccos ((ab) / (| a || b |)).
Cependant, cela ne contient pas de signe (c.-à-d. Qu'il ne fait pas de distinction entre une rotation dans le sens des aiguilles d'une montre ou dans le sens inverse).
J'ai besoin de quelque chose qui peut me dire l'angle minimum à faire pivoter de a à b. Un signe positif indique une rotation de l’axe X vers l’axe Y. Inversement, un signe négatif indique une rotation de l’axe X vers l’axe Y.
assert angle((1,0),(0,1)) == pi/2.
assert angle((0,1),(1,0)) == -pi/2.
26 votes
java