2つのベクトル間の角度を求める方法


  1. 内積を使用する方法: ベクトルAとベクトルBの内積を求めます。内積の計算方法は、2つのベクトルの各成分を掛け合わせ、それらの総和を取ることです。例えば、ベクトルA = (a1, a2, a3) とベクトルB = (b1, b2, b3) の内積は、a1b1 + a2b2 + a3*b3 となります。次に、内積をベクトルAとベクトルBの大きさの積で割ります。ベクトルの大きさは、各成分の値を2乗し、それらの総和の平方根を取ることで求めることができます。ベクトルAの大きさは、sqrt(a1^2 + a2^2 + a3^2) となります。したがって、2つのベクトルの内積をベクトルの大きさの積で割ることで、cosθ (θは角度) を求めることができます。最後に、arccos関数を使用してcosθから角度を求めます。

    以下はPythonでの内積を使用したコード例です:

    import numpy as np
    def angle_between_vectors(vector1, vector2):
       dot_product = np.dot(vector1, vector2)
       norm1 = np.linalg.norm(vector1)
       norm2 = np.linalg.norm(vector2)
       cos_theta = dot_product / (norm1 * norm2)
       theta = np.arccos(cos_theta)
       return np.degrees(theta)

    この関数は、2つのベクトルを引数として受け取り、その間の角度を度数法で返します。

  2. ベクトルの方向ベクトルを使用する方法: ベクトルAとベクトルBの方向ベクトルをそれぞれ計算します。方向ベクトルは、ベクトルの大きさで割ることで得られます。次に、arccos関数を使用して、2つの方向ベクトルの内積から角度を求めます。

    以下はPythonでの方向ベクトルを使用したコード例です:

    import numpy as np
    def angle_between_vectors(vector1, vector2):
       direction1 = vector1 / np.linalg.norm(vector1)
       direction2 = vector2 / np.linalg.norm(vector2)
       dot_product = np.dot(direction1, direction2)
       theta = np.arccos(dot_product)
       return np.degrees(theta)

    この関数も、2つのベクトルを引数として受け取り、その間の角度を度数法で返します。