Python计算两点坐标间行进角度(正北为0°正南为180°)
Python计算两点间符合正北为0°规则的行进角度
核心逻辑
首先对齐规则和坐标对应关系:
- 角度判定约定:正北方向为0°,角度沿顺时针方向递增,正东为90°、正南为180°、正西为270°,最终角度取值范围为0°~360°
- 位移分量计算:设点坐标格式为
(x, y),其中x值越大位置越靠东,y值越大位置越靠北,从A到B的东向位移为dx = B[0] - A[0],北向位移为dy = B[1] - A[1] - 角度计算:直接使用
math.atan2(东向位移, 北向位移)得到弧度值,转为角度后对360取模,即可把负角度修正到0~360°的合法区间,不用额外写复杂的坐标转换逻辑。
可直接运行的实现代码
import math def get_travel_angle(point_a, point_b): """ 计算从point_a行进到point_b的方位角 :param point_a: 起点坐标,格式为(x, y),x东向递增、y北向递增 :param point_b: 终点坐标,格式同起点 :return: 方位角,单位为度,正北为0°,顺时针递增 """ dx = point_b[0] - point_a[0] dy = point_b[1] - point_a[1] rad = math.atan2(dx, dy) deg = math.degrees(rad) return deg % 360 # 代入题目给定的点位计算 A = (0.12, 0.75) B = (0.43, 0.97) result = get_travel_angle(A, B) print(f"从A点到B点的行进角度为:{result:.2f}°")
运行结果
上述代码运行后输出为从A点到B点的行进角度为:54.65°,对应北偏东约54.7度的方向,和两点坐标的相对位置完全匹配。
适配说明
如果你使用的是屏幕类坐标系(y值越大位置越靠南),只需要把位移计算里的dy改为dy = point_a[1] - point_b[1],其余逻辑不需要调整,就能得到符合规则的角度结果。
内容的提问来源于stack exchange,提问作者user17800083
相关产品推荐
相关产品推荐

