我想反转一个sin/cos操作来恢复一个角度,但是我不知道我应该怎么做。
我在弧度的角度上使用了sin和cos来获得x/y向量:
double angle = 90.0 * M_PI / 180.0; // 90 deg. to rad.
double s_x = cos( angle );
double s_y = sin( angle );在给定s_x和s_y的情况下,有可能恢复角度吗?我认为atan2是要使用的函数,但我没有得到预期的结果。
发布于 2012-12-29 14:05:51
atan2(s_y, s_x)应该会给你一个正确的角度。也许你颠倒了s_x和s_y的顺序。此外,您还可以分别在s_x和s_y上直接使用acos和asin函数。
发布于 2014-05-23 18:38:00
我使用acos函数从给定的s_x cosinus恢复角度。但是因为几个角度可能导致相同的余弦(例如cos(+60°) = cos(-60°) = 0.5),所以不可能直接从s_x获取角度,所以我还使用s_y的符号来获取角度的符号。
// Java code
double angleRadian = (s_y > 0) ? Math.acos(s_x) : -Math.acos(s_x);
double angleDegrees = angleRadian * 180 / Math.PI;对于(s_y == 0)的特定情况,取+acos或-acos并不重要,因为这意味着角度是0°(+0°或-0°是相同的角度)或180°(+180°或-180°是相同的角度)。
发布于 2012-12-29 14:07:15
在数学中是对sin和cos的反向操作。这是arcsin和arccos。我不知道你用的是什么编程语言。但通常情况下,如果它有cos和sin函数,那么它就可以有相反的函数。
https://stackoverflow.com/questions/14079127
复制相似问题