使用Python math.atan2计算两点连线与X轴夹角结果异常的问题
问题分析与修正
代码中的语法错误
你的代码存在两处明显语法问题:
- 函数定义缺少
def关键字,正确写法应为def angleFun(x1,y1,x2,y2): - 最后一行打印的变量
angle未定义,实际应打印计算好的degAngle
角度计算结果的误解
你提到第三个例子预期结果是315度,但实际输出299.36度,这是因为你给出的两点并不在45度方向上:
计算该例子的增量:
dx = x2 - x1 ≈ 0.0055dy = y2 - y1 ≈ -0.0098
两者绝对值并不相等,dy/dx ≈ -1.78,对应的角度自然不是315度(315度要求dy/dx = -1,即|dx|=|dy|且dx正、dy负)。math.atan2(dy, dx)的计算结果是完全正确的。
如果要得到315度的输出,需要确保两点的x、y增量绝对值相等,例如使用点p1=(0.497, 0.503)和p2=(0.503, 0.497),此时dx=0.006,dy=-0.006,计算出的角度就是315度。
修正后的完整代码
import math def angleFun(x1,y1,x2,y2): dx = x2 - x1 dy = y2 - y1 radAngle = math.atan2(dy, dx) degAngle = math.degrees(radAngle) if degAngle < 0: degAngle += 360 print(degAngle)
内容的提问来源于stack exchange,提问作者Theprash
相关产品推荐
相关产品推荐

