10
28

 

1. 이동 행렬 (Translation Matrix)

(x,y,z) 위치를 (tx, ty, yz)만큼 이동

 

_41, _42, _43의 행렬 요소를 곱한다.

x+tx, y+ty, z+tz

 

다이렉트X에서 제공하는 함수는 다음과 같다.

D3DXMATRIX matMatrix; D3DXMatrixTranslation(&matMatrix, 1.0f, 1.0f, 1.0f);

 

 

2. 신축 행렬 (Scale Matrix)

(x,y,z)를 x,y,z축으로 Sx, Sy, Sz만큼 Scaling(확대/축소)

수식이 (x*sx, y*sy, z*sz)가 되므로

_11, _22, _33 성분이 0이되면

0이되어 성분값이 0으로 없어진다.

 

다이렉트X에서 제공하는 함수는 다음과 같다.

D3DXMATRIX matMatrix; D3DXMatrixScaling(&matMatrix, 1.0f, 1.0f, 1.0f);

 

 

3. 회전 행렬 (Rotation Matrix)

DirectX는 왼손좌표계를 쓴다.

Radian(라디안)과 Degree(호도값)가 있다.

1라디안은 약 57.3도에 해당한다.

파이 라디안은 180도이다.

 

180 degree = π radian

1 degree = π / 180 radian

x degree = x * π / 180 radian

 

π radian = 180 degree

1 radian = 180 / π degree

x radian = x * 180 / π degree

 

인간은 호도값, 컴퓨터는 라디안 값을 선호해서

변환하는 함수를 알 필요가 있는 부분

 

다이렉트X에서 제공하는 함수는 다음과 같다.

D3DXToDegree( radian ) => radian 값을 degree 값으로 변환. D3DXToRadian( degree) => degree 값을 radian 값으로 변환

 

위 사진 순서대로 z축 회전 행렬, x축 회전행렬, y축 회전행렬이다.

고싸-싸코만 외워주면 편하다.

 

다이렉트X에서 제공하는 함수는 다음과 같다.

 

z축 : D3DXMatrixRotationZ(&행렬, f라디안)

x축 : D3DXMatrixRotationX(&행렬, f라디안)

y축 : D3DXMatrixRotationY(&행렬, f라디안)

XYZ 회전이 적용된 행렬 : D3DXMatrixRotationYawPitchRoll(&행렬, fyaw, fpitch, froll)

Pitch : X축,Yaw : Y축, Roll : Z축

Roll -> Pitch -> Yaw 순으로 곱해진다.

임의의 축 : D3DXMatrixRotationAxis(&행렬, vector3정점벡터, f각도)

 

 

 

COMMENT