如果我有 :
a=magic(9);
如何计算中任意两点之间向量的方向和大小a
?例如,如果我定义vec = [a(1,1) a(2,2)]
,向量的方向是否会定义为:vecdir = a(1,1) - a(2,2)
?
如果我有 :
a=magic(9);
如何计算中任意两点之间向量的方向和大小a
?例如,如果我定义vec = [a(1,1) a(2,2)]
,向量的方向是否会定义为:vecdir = a(1,1) - a(2,2)
?
计算方向的正确方法是使用atan2()
代替atan()
,因为atan()
无法解析象限并在第二和第三象限中给出错误的角度(即当 x 为负时)。举个例子,
x = -1;
y = -1;
dir = atan(y/x); % returns 0.78540 rad = 45 deg
这显然是错误的方向。然而,atan2()
产量
dir2 = atan2(y, x); % returns -2.3562 rad = -135 deg.
如果您坚持使用atan()
,则必须检查 x 参数的符号,并pi
在它为负时添加。
vec = [x y]
dist = sqrt(sum(vec.^2)) % i.e. sqrt(x^2 + y^2)
dir = atan(y/x) % i.e. atan(vec(2) / vec(1))