この公式で求めることができます。
このケースを解いてみると、
>>> 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件のフィードバック