私が持っている場合:
a=magic(9);
の任意の 2 点間のベクトルの方向と大きさを計算するにはどうすればよいa
ですか? たとえば、 を定義した場合vec = [a(1,1) a(2,2)]
、ベクトルの方向は次のように定義されますvecdir = a(1,1) - a(2,2)
か?
私が持っている場合:
a=magic(9);
の任意の 2 点間のベクトルの方向と大きさを計算するにはどうすればよいa
ですか? たとえば、 を定義した場合vec = [a(1,1) a(2,2)]
、ベクトルの方向は次のように定義されますvecdir = a(1,1) - a(2,2)
か?
方向を計算する正しい方法は、 のatan2()
代わりにを使用することですatan()
。これatan()
は、 は象限を解決できず、第 2 象限と第 3 象限で間違った角度を与えるためです (つまり、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))