Python中如何使用degrees()函数计算两个坐标点之间的夹角

2023-04-01 00:00:00 函数 如何使用 夹角

要计算两个坐标点之间的夹角,可以使用向量的夹角公式,将两个向量的点积除以它们的模的乘积,并使用acos()函数计算其反余弦值,最后使用degrees()函数将弧度值转换为角度值。

假设有两个坐标点A(x1, y1)和B(x2, y2),可以将它们看作向量OA和OB,其中O为坐标原点。假设向量OA和OB的点积为p,OA的模为|OA|,OB的模为|OB|,则它们之间的夹角θ为:

θ = acos(p / (|OA| * |OB|))

下面是一个例子,计算点(1, 1)和点(2, 3)之间的夹角,并将其转换为角度单位:

import math

# 定义点A和点B的坐标
x1, y1 = 1, 1
x2, y2 = 2, 3

# 计算向量OA和OB的坐标
a = x1, y1
b = x2, y2
oa = (0 - x1, 0 - y1)
ob = (x2 - x1, y2 - y1)

# 计算向量OA和OB的点积和模
p = oa[0] * ob[0] + oa[1] * ob[1]
oa_mod = math.sqrt(oa[0] ** 2 + oa[1] ** 2)
ob_mod = math.sqrt(ob[0] ** 2 + ob[1] ** 2)

# 计算夹角,结果以弧度表示
result_rad = math.acos(p / (oa_mod * ob_mod))

# 将弧度值转换为角度值
result_deg = math.degrees(result_rad)

print("点A坐标:", a)
print("点B坐标:", b)
print("点A和点B之间的夹角(弧度):", result_rad)
print("点A和点B之间的夹角(角度):", result_deg)

运行上述代码,输出结果如下:

点A坐标: (1, 1)
点B坐标: (2, 3)
点A和点B之间的夹角(弧度): 0.7853981633974483
点A和点B之间的夹角(角度): 45.0

其中,向量OA和OB的坐标分别为(0 - x1, 0 - y1)和(x2 - x1, y2 - y1);向量OA和OB的点积为oa[0] * ob[0] + oa[1] * ob[1];向量OA的模为math.sqrt(oa[0] 2 + oa[1] 2),OB的模同理;使用math.acos()函数计算夹角的弧度值,最后使用math.degrees()函数将其转换为角度值。

相关文章