You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python math.atan2计算两点连线与X轴夹角结果异常的问题

问题分析与修正

代码中的语法错误

你的代码存在两处明显语法问题:

  • 函数定义缺少def关键字,正确写法应为def angleFun(x1,y1,x2,y2):
  • 最后一行打印的变量angle未定义,实际应打印计算好的degAngle

角度计算结果的误解

你提到第三个例子预期结果是315度,但实际输出299.36度,这是因为你给出的两点并不在45度方向上:
计算该例子的增量:

  • dx = x2 - x1 ≈ 0.0055
  • dy = 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 15:45:03