2013-01-15 2 views
0

나는 오일러 각도와 위치를 통해 자신의 방향을 유지하는 카메라 클래스가 있습니다. 다음과 같은 것이 있습니다 :오일러 카메라, 카메라 로컬 시스템에서 x 축을 중심으로 회전

float m_x; 
float m_y; 
float m_z; 

Vector4 m_pos; 

그리고 나는이 카메라를 자유롭게 움직이고 싶습니다. 사용자가 마우스를 상하로 움직이면 카메라는 자신의 좌표계에서 x 축을 중심으로 회전해야합니다. 그러나 나는이 세 가지 각도와 위치 만 잡고 싶습니다.

  1. 찾기 카메라 로컬 시스템 축 (U, V, N)
  2. 회전 u는 각도 (α)에 대한 축선 주위
  3. 주위의 각도를 찾아 (1, 0, 0 :

    따라서 알고리즘은 다음과 같다), (0, 1, 0), (0, 0, 1) (α)에 회전에 그 대답은 주위 유, m_y, 그들이 m_x에 추가

  4. 을 축

질문입니다 m_z : 내가 어떻게 할 수있는 계산 로컬 카메라 좌표계에서 회전 각도에 응답하는 기본 좌표계 (즉, (1, 0, 0), (0, 1, 0) 및 (0, 0, 1))의 회전 각도?

Description

또는 더 나은 해결책이 될 수 있습니다이 문제에 대한 존재?

+3

쿼터니언을 바라 보는 것이 좋습니다. 오일러 각은 카메라에 좋지 않습니다. 특히 3 축을 중심으로 회전 할 계획이라면 특히 좋습니다. – sradforth

+0

고맙습니다.하지만 어쨌든 : 원하는 것을 계산하는 방법은 무엇입니까? :) – acrilige

+0

당신이 실제로하고 싶은 것이 약간 명확하지 않습니다. 텍스트 전체에 걸쳐 카메라가 그녀입니까? 게다가 당신이하려고하는 것은 당신이 가장 원하지 않는 결과를 얻게 할 것이고, 짐벌 락을 찾는다. – Ylisar

답변

1

나는 your comment에서 간결한 질문에 대답 해요 :

어떻게 하나의 회전이 다른 좌표계에서 회전에 대답 좌표계를 계산하는 방법?

적절한 변환 행렬을 적용하여 좌표계간에 회전을 변환 할 수 있습니다. 이것은 오일러 각에서 계산할 수 있습니다 (Wikipedia section on conversion formulae 참조).

응용 프로그램에 따라 번역도 고려해야 할 수도 있고 그렇지 않을 수도 있습니다. 귀하의 질문을 이해하면 각 변환의 회전 부분에 집중할 수 있습니다.

관련 문제