DirectX Graphics 프로그래밍 가이드 Direct3D 의 기초지식 3D 좌표계와 지오메트리 벡터, 정점, 쿼터니온   [목차열람] [주소복사] [슬롯비우기]
벡터, 정점, 쿼터니온
 
Microsoft DirectX 9.0

벡터, 정점, 쿼터니온


Microsoft® Direct3D® 에서는, 정점에 의해 위치와 방향이 나타낸다. 기본도형의 각 정점은, 위치를 나타내는 벡터, 색, 텍스처 좌표, 자세를 나타내는법선 벡터에 의해 기술된다.

쿼터니온은, 3 성분 벡터를 정의하는 [x, y, z] 값에 제 4 의 성분을 추가한다. 쿼터니온은, 3D 회전으로 일반적으로 사용되는 행렬 방법에 대신하는 것이다. 쿼터니온은, 3D 공간내의 축과 그 축을 중심으로 하는 회전을 나타낸다. 예를 들어, 1 개의 쿼터니온으로 축 (1,1,2)과 1 라디안의 회전을 나타낼 수가 있다. 쿼터니온은 중요한 정보도 전하지만, 그 진가는, 쿼터니온상에서 실행할 수 있는 2 개의 처리, 합성과 보간으로 발휘된다.

쿼터니온의 합성은, 행렬의 결합 처리에 유사하고 있다. 2 개의 쿼터니온의 합성은, 이하와 같이 설명할 수 있다.

쿼터니온의 표기

1 개의 지오메트리에 대한 2 개의 쿼터니온의 합성이란, 「지오메트리를 axis2 를 중심으로 rotation2 만 회전한 후에, axis1 을 중심으로 rotation1 만 회전한다」것이다. 이 경우 Q 는, 지오메트리에 q2 를 적용한 후에 q1 을 적용한 결과와 같은 회전을, 단일축을 중심으로 하는 회전에 의해 나타낸다.

쿼터니온의 보간을 사용하면, 애플리케이션은 있는 축과 자세로부터 다른 축과 방향까지의 매끄럽고 적절한 패스를 계산할 수가 있다. 따라서, q1 으로부터 q2 의 사이를 보간 하면, 어느 자세로부터 다른 자세에 간단하게 애니메이션 할 수가 있다.

합성과 보간을 조합하면 지오메트리의 일견 복잡할 것 같은 조작을 간단하게 실행할 수 있다. 예를 들어, 일정한 방향으로 회전시키고 싶은 지오메트리가 있다고 한다. axis2 를 중심으로 r2 번만 회전한 후에, axis1 을 중심으로 r1 번만 회전하는 것은 알고 있지만, 최종적인 쿼터니온은 모른다고 한다. 이 경우, 합성에 의해 지오메트리 위에의 2 개의 회전을 결합하면, 그 결과적으로, 단일의 쿼터니온이 생성된다. 그리고, 원의 쿼터니온과 합성된 쿼터니온의 사이를 보간 하면, 쿼터니온으로부터 쿼터니온에 매끄러운 처리을 실현할 수 있다.

Direct3D extension (D3DX) 유틸리티 라이브러리에는, 쿼터니온의 조작에 도움이 되는 함수가 있다. 예를 들어,D3DXQuaternionRotationAxis 함수는, 회전의 축을 정의하는 벡터에 회전값을 덧셈 해, 그 결과를 D3DXQUATERNION 구조체에 의해 정의되는 쿼터니온에 돌려준다. 게다가D3DXQuaternionMultiply 함수는 쿼터니온을 합성해,D3DXQuaternionSlerp 는 2 개의 쿼터니온간에 구면선형 보간을 실행한다.

Direct3D 애플리케이션에서는, 이하의 함수를 사용해 쿼터니온의 조작을 단순화 할 수 있다.

Direct3D 애플리케이션에서는, 이하의 함수를 사용해 3 성분 벡터의 조작을 단순화 할 수가 있다.

그 외, D3DX 유틸리티 라이브러리의산술 함수에는,2 성분 벡터나 4 성분 벡터에 의한 처리를 단순화하기 위한 함수가, 다수 준비되어 있다.



© 2002 Microsoft Corporation. All rights reserved.
↑TOP