2017-04-26 5 views
0

.X3D 형식에는 흥미로운 회전 시스템이 있습니다. X, YZ 축을 중심으로 회전 값을 포함하는 대부분의 형식과 달리 .X3D은 정규화 된 방향 벡터를 제공 한 다음 해당 축을 중심으로 회전하는 데 필요한 라디안 값을 제공합니다.특정 축을 중심으로 벡터를 회전하는 방법

예 :

The axis to rotate around: 0.000000 0.465391 0.885105 
Rotation around that axis (in radians): 3.141593 

내가 라디안에서 변환을 가지고 있지만, 나는이 값에서 XYZ 주위의 회전 값이 필요합니다.

+0

코드가 보여? – MickyD

+0

사실, 아직 코드가 없습니다. 이 작업을 수행하는 방법에 대한 개념을 묻는 것입니다. –

답변

0

우리는 기본 매트릭스 변환에 대한 시퀀스를 작성하여 각도 축을 중심으로 회전 할 수 있습니다. 축 단위 벡터는 w, 각도는 Theta입니다. 보조 값 : V의 값이 0이기 때문에 위해 축이 하나의 방향 (부호 차지) Y에 대한 일반적인 그냥 회전 매트릭스를 사용해야 Y에 평행 한 것을

V = Sqrt(wx*wx + wz*wz) 
W = Sqrt(wx*wx + wy*wy + wz*wz) //1 for unit dir vector 
Cos(Alpha) = wz/V 
Sin(Alpha) = wx/V 
Cos(Beta) = V/W 
Sin(Beta) = wy/W 

Transformation sequence: 
Ry(-Alpha) //rotation matrix about Y-axis by angle -Alpha 
Rx(Beta) 
Rz(Theta) 
Rx(-Beta) 
Ry(Alpha) 

참고.


는 단위 벡터 w에 의해 지정되는 고정 축에 대한 각도 세타에 의해 회전에 대응하는 회전 행렬을 계산 Rodrigues' rotation formula 다소 복잡있다.

명시 매트릭스 here (이상한 포맷 사진) : enter image description here

+0

C#에서 예제를 줄 수 있습니까? X Y Z로 회전 값을 얻는 것이 더 낫습니다. (도 또는 라디안으로) –

+0

사용 준비가 된 개념과 명시 적 매트릭스가 주어졌습니다. 적용 방법을 모르는 경우 - 아핀 변환에 대해 읽으십시오. – MBo

+0

좋아, 일단 내가 성공적으로 사용하면이 답변을 올바르게 표시 할 것입니다. –