У меня есть две точки, a
и b
. Мне нужно рассчитать угол между ними, поэтому я отношусь к ним как к векторам. Однако вектор a
всегда будет определен как [0 0 0]. Чтение над MATLAB NewsReader, «Angle between two vectors», предусмотрены три варианта решения:Угол между двумя векторами в 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))
Однако, как acos
имеет проблемы точности, как тэта приближается к нулю, но из трех уравнений, только acos
обеспечивает правильное решение.
Должен ли я продолжать использовать acos
или есть лучшее решение?
Что угол между двумя точками? И каков угол между двумя векторами, когда один из них [0 0 0]? – Henrik
Что еще означает найти угол между двумя векторами, где один равен 0? Вы уверены, что не должно быть [1 1 1]? Кроме того, формула с acos действительна только тогда, когда векторы имеют единичную длину, что неверно для не менее. – Xodarap