У меня есть две точки, a
и b
. Мне нужно вычислить угол между ними, поэтому я отношусь к ним как к векторам. Однако вектор a
всегда будет определяться как [0 0 0]. Читая через MATLAB Newsreader, « Угол между двумя векторами », предоставляются три решения:
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
или есть лучшее решение?