2012-06-10 6 views
1

여기 내 축이 있습니다. 나는 그것을 무엇이라고 부를지 모른다. (이 ZXY입니까?) (이는 카메라가 보는 것을) 내가 Y 축을 중심으로 평면 회전을 알고 싶어회전 행렬에서 Y 회전

. 현재는이 시계 반대 방향으로, 잘못된 각도를 반환

Matrix33 orientmatrix = body->getGlobalOrientation(); 
return Degree(-asin(orientmatrix[2][0])); 

Y.

여기

내가하는 일입니다 약 0도,이다 0..45..90..45..0은 ..- 45 ..- 90 ..- 45..0

: 0 ... 45..90..135..180 ..-45 ..- 90 ..- 135..0

무엇이 잘못 되었나요?

감사합니다.

답변

3

(이 코드는 C++입니다 괴물이다) 당신이 잘못하고있는 것은 당신이 asin를 사용하고 있다는 점이다. -pi/2에서 + pi/2 또는 -90도에서 +90도 사이의 값을 반환합니다.

360도에 이르는 값을 원하면 atan2을 사용해야합니다. 귀하의 방향이 실제로 y에 대한 회전이라고 가정하면

Degree(atan2(orientmatrix[0][2], orientmatrix[0][0]))