【Python】3点の座標から角度を計算する方法

この記事では、3つの点の座標から2つのベクトルを求め、そのベクトルを用いて角度を計算する方法を紹介します。

Pythonを使って簡単に角度を計算する手法を学びましょう。

目次から探す

3点の座標から2辺のベクトルを求める

3つの点の座標が与えられた場合、まずそれらの点を結んでできる2つのベクトルを求めることができます。

これらのベクトルを用いて角度を計算する方法を紹介します。

ベクトルの内積を用いて角度を計算する方法

2つのベクトルが与えられたとき、これらのベクトルの内積を求めることで角度を計算することができます。

具体的な計算手順をサンプルコードを交えて説明します。

import math

def dot_product(v1, v2):
    return sum((a*b) for a, b in zip(v1, v2))

def vector_angle(v1, v2):
    dot = dot_product(v1, v2)
    norm_v1 = math.sqrt(dot_product(v1, v1))
    norm_v2 = math.sqrt(dot_product(v2, v2))
    cos_theta = dot / (norm_v1 * norm_v2)
    angle_rad = math.acos(cos_theta)
    angle_deg = math.degrees(angle_rad) # 度数法に直す
    return angle_deg

# 3点の座標
A = (0, 0)
B = (3, 4)
C = (6, 1)

# ベクトルABとBCを求める
AB = (B[0] - A[0], B[1] - A[1])
BC = (C[0] - B[0], C[1] - B[1])

# ベクトルABとBCの角度を計算する
angle = vector_angle(AB, BC)
print(f"角度: {angle}度")

Pythonで3点の座標から角度を計算する方法

Pythonを用いて、3つの点の座標から角度を計算する方法を示します。

具体的な手順とサンプルコードを用いて説明します。

import math

def calculate_angle(A, B, C):
    AB = (B[0] - A[0], B[1] - A[1])
    BC = (C[0] - B[0], C[1] - B[1])
    
    dot = AB[0]*BC[0] + AB[1]*BC[1]
    norm_AB = math.sqrt(AB[0]**2 + AB[1]**2)
    norm_BC = math.sqrt(BC[0]**2 + BC[1]**2)
    
    cos_theta = dot / (norm_AB * norm_BC)
    angle_rad = math.acos(cos_theta)
    angle_deg = math.degrees(angle_rad) # 度数法に直す
    
    return angle_deg

# 3点の座標
A = (0, 0)
B = (3, 4)
C = (6, 1)

# 角度を計算する
angle = calculate_angle(A, B, C)
print(f"角度: {angle}度")

NumPyライブラリを使用した実装方法

NumPyライブラリを使用することで、ベクトルや角度の計算をより簡潔に行うことができます。

以下にNumPyを使用した実装方法を示します。

import numpy as np

def calculate_angle_numpy(A, B, C):
    AB = np.array(B) - np.array(A)
    BC = np.array(C) - np.array(B)
    
    dot = np.dot(AB, BC)
    norm_AB = np.linalg.norm(AB)
    norm_BC = np.linalg.norm(BC)
    
    cos_theta = dot / (norm_AB * norm_BC)
    angle_rad = np.arccos(cos_theta)
    angle_deg = np.degrees(angle_rad) # 度数法に直す
    
    return angle_deg

# 3点の座標
A = (0, 0)
B = (3, 4)
C = (6, 1)

# NumPyを使用して角度を計算する
angle = calculate_angle_numpy(A, B, C)
print(f"角度: {angle}度")

これらの方法を使って、3点の座標から角度を計算する際に役立ててみてください。

終わりに

以上で、3点の座標から2辺のベクトルを求め、それを用いて角度を計算する方法について解説しました。

Pythonを使って簡単に角度を計算することができるので、ぜひ活用してみてください。

目次から探す