atan()和atan2()
| 特性 |
| atan2(y, x) |
|---|---|---|
| 输入参数 | 1个:斜率(一个数字,即 y/x) | 2个:点的坐标值(y 和 x) |
| 输出范围 | -π/2 到 π/2 (-90° 到 90°) | -π 到 π (-180° 到 180°) |
| 象限判断 | 不能,有歧义 | 可以,自动精确判断 |
| 安全性 | 当 x=0 时,计算 y/x 会导致除以零错误 | 能安全处理 x=0 的情况(如点在Y轴上) |
| 主要用途 | 已知斜率求基础角度 | 坐标转换、计算方向(首选) |
假设有两个点:
A: (x=1, y=1)
B: (x=-1, y=-1)
计算它们的斜率:
点 A 的斜率 = 1 / 1 = 1
点 B 的斜率 = (-1) / (-1) = 1
使用 atan() 的情况:
atan(1) 的计算结果大约是 0.785 弧度(45度)。
对于点 A(在第一象限),这个结果是正确的。
但对于点 B(在第三象限),实际角度应该是 225度(或 -135度),而 atan() 却只返回了 45度。因为它只关心斜率,无法知道分子和分母的正负,这就是象限模糊性。
使用 atan2() 的情况:
atan2(1, 1) 接收两个独立的坐标,它能“看到” x 和 y 都是正的,因此判断点在第一象限,返回 45度。
atan2(-1, -1) 能“看到” x 和 y 都是负的,因此判断点在第三象限,返回 -135度(等价于 225度)。
结论:atan2() 通过分析两个参数的符号,消除了歧义,总能返回唯一正确的角度。

被折叠的 条评论
为什么被折叠?



