2011-10-29 2 views
1

previous question에서부터 쿼터니언을 사용하여 개체를 회전 할 수 있지만 여전히 작은 문제가 있으며 해결 방법을 모른다. 아래 코드를 사용하면 객체가 x 및 y 축 둘레에서 회전합니다. 하지만 x와 y 키 사이를 전환하면 항상 초기 위치로 돌아갑니다. 그래서 나는 결코 새로운 위치에서 회전을 얻지 못했지만, 항상 프로그램이 시작한 위치에서 회전을 얻습니다.쿼터니온을 이용한 회전이 올바르지 않다

Quaternion q1 = quaternion->quat_rotate(anglex,1,0,0); 
Quaternion q2 = quaternion->quat_rotate(angley,0,1,0); 
quaternion->mult(q1,q2); 
quaternion->quat_matrix(Matrix); 
glMultMatrixf(Matrix); 
object->drawObject(Red,Green,Blue); 

내가 무슨 뜻인지 이해하시기 바랍니다.

+0

x 키를 오래 누르고 있으면 더 큰 각도가 생깁니 까? 키를 놓을 때이 값을 다시 설정합니까? 전체 코드를 게시하십시오. 그 쿼터니온 변수는 무엇입니까? –

답변

1

그러나 x와 y 키 사이를 전환하면 항상 초기 위치로 돌아갑니다. 그래서 나는 결코 새로운 위치에서 회전을 얻지 못했지만, 항상 프로그램이 시작한 위치에서 회전을 얻습니다.

물론 그렇습니다. 귀하의 코드는 귀하가하고있는 것을 정확히하고 있습니다. 당신은 Quaternion::mult(Quaterion&q1,Quaterion&q1)이 무엇인지 우리에게 알려주지 않았지만, 쿼터니언 인스턴스의 내용을 q1과 q2의 결과로 대체 할 것으로 생각됩니다. q1 * q2로 현재 방향을 바꾸기보다는 q1 * q2로 현재 방향을 곱해야 새로운 방향을 얻을 수 있습니다.

관련 문제