试试这个!
atan2(sin(angle), cos(angle))
atan2
具有 [-π, π) 的范围。这利用了tan θ = sin θ / cos θ的事实,这足够聪明,可以知道哪个象限θ在哪个。atan2
由于您需要度数,因此您需要将角度与弧度相互转换:
atan2(sin(angle * PI/180.0), cos(angle * PI/180.0)) * 180.0/PI
更新我之前的例子是完全合法的,但将范围限制为±90°。的范围是 -179° 到 180° 的所需值。保存如下。atan2
试试这个:
asin(sin(angle)))
的域是实线,范围是 。的域是 ,范围是 。由于 是 的反函数,因此您的输入不会更改(很多,有一些漂移,因为您使用的是浮点数)。因此,您可以取回输入值,并得到所需的范围作为反正弦受限范围的副作用。sin
[-1, 1]
asin
[-1, 1]
[-PI/2, PI/2]
asin
sin
由于您需要度数,因此您需要将角度与弧度相互转换:
asin(sin(angle * PI/180.0)) * 180.0/PI
(警告:Trig函数比简单的除法和减法运算慢很多倍,即使它们是在FPU中完成的!