2014-03-29 4 views
0

저는 다이렉트를 가지고 잠시 놀았으며 (0,0,0) 주위를 돌리지 않고 무언가를 돌리는 법을 알 수 없습니다. 내 세계의 중심에서 멀리 떨어질수록 회전하는 동안 더 큰 원이 생깁니다.Directx11은 세계 중심을 중심으로 회전합니까?

T(-x₀,-y₀,-z₀) * R(α) * T(x₀,y₀,z₀) 

T가 번역을 의미하고, R은 회전을 의미합니다 (x₀, y₀, z₀)에 위치한 점 P 주위에 회전 α를, 필요한 경우

+0

THEN rotate를 번역해야합니다. – Ben

답변

0

매트릭스 변환이 좌표계에 적용된다는 사실을 잊지 마십시오. 예를 들어 xy 평면에서 개체를 위쪽으로 20 단위 이동하고 90도 회전하려고한다고 가정 해 봅시다. 먼저 90도 회전하면 평면 전체를 90도 회전합니다. 즉, y 축을 위로 90도 회전하면 새로운 "위쪽"입니다.

그래서 먼저 객체의 중심이 0,0이되도록 변환합니다. 이제 우리가 회전 할 때, 우리는 물체의 중심을 중심으로 회전해야합니다. 물론 번역을 잊어 버리거나 어떻게 든 매트릭스를 지우지 마십시오.

매트릭스 변환을 수행 할 때 순서가 중요합니다. 알고 계실 것입니다. 일반적으로 번역, 축척, 회전해야합니다.

0

, 당신은 매트릭스를 만들 수 있습니다. 또한 행 또는 열 행렬과 같은 규칙에 따라 작업 순서를 되돌려 야 할 수 있습니다.

관련 문제