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.



Related