如果我有 :
a=magic(9);
Run Code Online (Sandbox Code Playgroud)
如何计算任意两点之间矢量的方向和幅度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
Run Code Online (Sandbox Code Playgroud)
这显然是错误的方向.然而,atan2()收益率
dir2 = atan2(y, x); % returns -2.3562 rad = -135 deg.
Run Code Online (Sandbox Code Playgroud)
如果您坚持使用atan(),则必须检查x参数的符号,并pi在其为负时添加.
| 归档时间: |
|
| 查看次数: |
9932 次 |
| 最近记录: |