J'ai deux points, a
et b
. J'ai besoin de calculer l'angle entre eux, donc je les traite comme des vecteurs. Cependant, le vecteur a
sera toujours défini comme [0 0 0]. La lecture sur l'Matlab Newsreader, « Angle between two vectors », trois solutions sont proposées:Angle entre deux vecteurs dans Matlab
x1 = 0;
y1 = 0;
z1 = 0;
x2 = 0;
y2 = 1;
z2 = 0;
a = [x1,y1,z1]; b= [x2,y2,z2];
theta = rad2deg(atan2(norm(cross(a,b)),dot(a,b)))
theta = rad2deg(acos(dot(a,b)))
theta = rad2deg(atan2(x1*y2-x2*y1,x1*x2+y1*y2))
Cependant, comme acos
a des problèmes de précision que thêta se rapproche de zéro, mais des trois équations, ne acos
fournit la bonne solution.
Dois-je continuer à utiliser acos
ou est-il une meilleure solution?
Quel est l'angle entre deux points? Et quel est l'angle entre deux vecteurs, quand l'un d'entre eux est [0 0 0]? – Henrik
Que signifie même de trouver l'angle entre deux vecteurs où l'on est 0? Etes-vous sûr que ne devrait pas être [1 1 1]? De plus, la formule avec acos n'est valable que lorsque les vecteurs ont une longueur unitaire, ce qui n'est pas vrai pour au moins. – Xodarap