numpyでベクトルの向きを考慮して2つのベクトル間の角度を計算したい
まず以下のようにして、
ベクトルxとベクトルyの角度を計算する関数を書きます。
import numpy as np
def angle(x, y):
dot_xy = np.dot(x, y)
norm_x = np.linalg.norm(x)
norm_y = np.linalg.norm(y)
cos = dot_xy / (norm_x*norm_y)
rad = np.arccos(cos)
theta = rad * 180 / np.pi
return theta
次にこの関数を用いて、
以下のベクトルxとベクトルyの角度を計算します。
x = np.array([1, 0, 1])
y = np.array([1, 1, 1])
print angle(x, y)
この結果はもちろん、45.0となります。
ここで、上記のベクトルxと以下のベクトルzの角度を計算します。
z = np.array([1, -1, 1])
print angle(x, z)
この場合ももちろん、上記と同じ角度である45.0が出力されます。
しかしここで、
xとyで計算した時を「正の方向」とした上で、
xとzの角度は45.0ではなく、315.0と出力したいです。
numpyではどのようにすれば、
ベクトルの向きを固定して角度を計算することができるでしょうか?
よろしくお願いします。