2017-10-12 7 views
0

우선, 회전, 쿼터니언 및 행렬을 시작하기 때문에이 순간 내가 오해 한 부분에 대해서는 이미 실례합니다.3D 차원 회전 변환

상황 :

OSX SceneKit 응용 프로그램.

나는 X + 오른쪽, Y + 앞으로, Z + 위쪽의 3D 공간을 가지고 있습니다.

  • 센터 :이 공간 내부

    난 디스크가 {X : 2.0, Y : 2.0 Z : 2.0} I 만든이 원호의 중심에
  • 반경 2.0

3 개의 축 모두에서 디스크로 회전을 설정할 수있는 일부 컨트롤. 피치 (Y 축), 롤 (X 축) Yaw (Z 축). 내가 원하는 것은이 디스크의 현재 각도가 무엇이든 피치 컨트롤을 사용하여 각도를 조정할 때 로컬 본체 프레임이 아니라 '기본'프레임에서 회전되도록하려는 것입니다. 컨트롤은 함께 회전하지 않고 '기본'프레임에서도 평평하게 유지됩니다.

조금 더 자세히, 나는 디스크를 90deg 롤. 피치를 적용 할 때 로컬 바디 프레임에서 피치를 사용하지 않고 로컬 바디 프레임에서 실제로 YAW를 사용합니다.

그래서 내가 실제로 찾고있는 것은 위에서 설명한대로 디스크가 회전하는 것과 같은 방식으로 내 '입력 조정'을 회전시키는 방법입니다. 벡터를 회전하는 방법을 알고 있지만 롤, 피치, 요 방향 회전을 처리하는 방법에 대해 고민하고 있습니다.

도움이 될 것입니다.

+0

[4x4 동질 변환 매트릭스 이해] (https://stackoverflow.com/a/28084380/2521214)를 살펴보고 로컬 변환과 전역 변환의 차이점을 확인하십시오. 내가 오일러 ​​각 대신에 누적 변환 행렬을 사용한다면 ... 많은 이점을 가지고 있기 때문에 ... (마지막 링크 참조) ... 어쨌든 렌더링을 위해 결과가 필요합니다 ... – Spektre

답변

0

당신은 세 개의 연속 회전을한다. 합한 회전 행렬

E = R_Z(yaw)*R_X(pitch)*R_Y(roll) 

이다 R_X(), R_Y()R_Z() 원소 순환 게재 3 × 3 매트릭스의 각. 각각의 구성 요소는 Basic Rotations (wikipedia)을 참조하십시오.