2013-12-13 3 views
1

나는 오우거의 쿼터니온으로 작업하고 있습니다.
각 프레임 내가 얻을 : 시간 T + 1에서 X-회전 시간 T에서 X-회전 180 ° 작은 경우오각형의 쿼터니언 차이점

Ogre::Quaternion prev; 

bool frameStarted(const Ogre::FrameEvent& event) { 
    const Ogre::Quaternion q = object->getOrientation(); 
    if(abs(q.x - prev.x) > ...) { 
     /* do something */ 
     prev = q; 
    } 
} 

는 어떻게 확인할 수 있나요?

답변

2

저는 쿼터니언의 x 회원과 당신이하고 싶은 것을 정말로 얻지 못합니다. 다른 회전 축의 x 좌표를 비교하는 경우.

그러나 질문이 맞으면 x 축을 기준으로 회전 각도의 차이를 찾고 있습니다. 이 경우 http://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles은 쿼터니온을 오일러 각으로 변형 할 수있는 방법을 설명하며 각 쿼터니언은 각 표준 베이시스 (X, Y 및 Z) 주위로 회전 각도를 제공합니다. 그런 다음 오일러 각도를 비교합니다 (180도 대신에 파이를 사용하므로 라디안으로 표시됩니다).

+1

위키 링크를 이미 보았습니다. 그러나 그것을 얻을 수는 없습니다 ... –

+0

죄송합니다. 주말에는 항상 스트레스가 많이 발생합니다. 그것은 "변환"섹션의 마지막 방정식이며 거기에서 파이의 값을 찾고 있습니다 (pi 및 x 축의 각도로 쉽게 확인할 수 있습니다.이 값은 쿼터니언 (0, (1, 0, 0)) 따라서 방정식은 atan2 (0, -1)로 단순화되어 예상대로 pi를 제공합니다. 따라서 x 축에 대한 회전 각도의 차이 **가 180 °이면 다음과 같이 보일 것입니다 : http://pastebin.com/YwFF4Tvy –