【数学】【PYTHON】2つのベクトルのなす角度を求める。

この公式で求めることができます。

このケースを解いてみると、

>>> import math
>>> import numpy as np
>>> a = np.array([2,7])
>>> b = np.array([6,1])
>>> c = np.array([2,3])
>>> d = np.array([6,5])
>>>
>>> va = b - a
>>> vb = d - c
>>>
>>> norm_a = np.linalg.norm(va)
>>> norm_b = np.linalg.norm(vb)
>>>
>>> dot_ab = np.dot(va, vb)
>>>
>>> cos_th = dot_ab / (norm_a * norm_b)
>>> rad = math.acos(cos_th)
>>> deg = math.degrees(rad)
>>> print(deg)
82.8749836510982
>>>

変数a,b,c,dは各座標の値を示しています。

va,vbはベクトルの成分を計算しています。

引き算で計算できるのは便利。

np.linalg.norm()でベクトルの大きさを求めています。

ベクトルの各成分を2乗した和の平方根を計算してくれます。

np.dot()はベクトルの内積を求めています。

cos_thには上の公式を使用した計算結果が入ります。

これをcosの逆関数を計算し、ラジアンを角度に変換すると、

およそ83度という計算結果となります。

「【数学】【PYTHON】2つのベクトルのなす角度を求める。」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください