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각도)
'STUDY > Game Mathematics' 카테고리의 다른 글
DirectX11 - Fixed Angle(고정 각), Euler Angle(오일러 각), Quaternion(사원수) 정리 (0) | 2022.03.25 |
---|---|
행렬 Matrix - 상등, 덧셈, 곱셈, 전치, 단위, 행렬식, 역행렬, 소행렬식 계산 방법 (0) | 2021.12.16 |
삼각함수 표 (0) | 2021.11.01 |
벡터의 내적과 외적 (0) | 2021.10.28 |