2012-12-29 13 views
10

각도를 되찾기 위해 sin/cos 작업을 뒤집고 싶지만 무엇을해야하는지 알 수 없습니다.sin/cos 변환으로부터 각도를 되찾기

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,이 각도를 다시 얻을 수 있습니다 :

나는 같은 X/Y 벡터를 얻을 수 라디안 각도에 sincos을 사용했다? 나는 atan2이 사용할 함수라고 생각했지만 기대했던 결과를 얻지 못했습니다.

답변

13

atan2(s_y, s_x)은 올바른 각도를 제공해야합니다. 어쩌면 s_xs_y의 순서를 바꿨을 수도 있습니다. 또한 acosasin 기능을 각각 s_xs_y에 직접 사용할 수 있습니다.

+0

x에 죄를 지정하는 몇 가지 코드가 있었고 일부 비트가 죄를 y에 지정했기 때문에 x/y가 실제로 반전되었습니다. –

3

수학에서 sin과 cos의 역 연산입니다. 이것은 arcsin과 arccos입니다. 어떤 프로그래밍 언어를 사용하는지 모르겠습니다. 그러나 대개 cos과 sin 함수가있는 경우 역방향 함수를 가질 수 있습니다.

2

asin (s_x), acos (s_y), 아마도 c를 사용하는 경우.

4

나는 주어진 s_x 코사인으로부터 각도를 되찾기 위해 acos 함수를 사용합니다. 그러나 여러 각도가 동일한 cosinus (예 : cos (+ 60 °) = cos (-60 °) = 0.5)로 나타날 수 있기 때문에 s_x에서 각도를 직접 가져올 수 없습니다. 그래서 나는 또한 syy의 기호를 사용하여 각도의 부호를 얻습니다. 이 각도를 의미하기 때문에

(s_y == 0)의 특별한 경우에 대한
// Java code 
double angleRadian = (s_y > 0) ? Math.acos(s_x) : -Math.acos(s_x); 
double angleDegrees = angleRadian * 180/Math.PI; 

+ ACOS 또는 -acos을 0 ℃ (+ 0 ° 또는 -0 °가 동일한 각도이다되어 문제가되지 않는다) 또는 180 ° (+ 180 ° 또는 -180 °는 동일한 각도 임).