728x90
# D3DMATRIX와 D3DXMATRIX의 차이점은
operator 연산자 오버로딩이 되어 있는지 없는지 차이이다.
D3DXMATRIX로 행렬을 만들면 연산자 오버로딩이 가능하다.
#ifndef D3DMATRIX_DEFINED
typedef struct _D3DMATRIX {
union {
struct {
float _11, _12, _13, _14;
float _21, _22, _23, _24;
float _31, _32, _33, _34;
float _41, _42, _43, _44;
};
float m[4][4];
};
} D3DMATRIX;
F12를 눌러서 확인해보면
4x4 행렬임을 알 수 있다.
D3DXMatrixIdentity -> 단위행렬로 변환해줌
D3DXMatrixScaling -> 크기(x,y,z순) 변경할 때 사용
D3DXMatrixRotationZ -> Z축(뒤에 Y나 X로 바꾸면 해당 축 기준이됨) 기준으로 회전시킬때 사용 (&넣을곳, 라디안값)
D3DXMatrixTranslation -> (&넣을곳, X, Y, Z)
거의 모든 함수는 단위행렬화 시킨 후 값을 적용 시키기 때문에 따로따로 해주어야 한다.
위 함수를 이용해 구한 나온 값들은 아래와 같은 순서로 곱해줘야한다 (행렬은 교환법칙이 성립하지 않기 때문)
스케일 * 회전(자전) * 이동 * 회전(공전) * 부모 순으로 곱해야 한다.
위와 같이 곱해서 구해준 값을
D3DXVec3TransformCoord
D3DXVec3TransformNormal
두가지로 나타낼 수 있는데
Coord는 W값이 1이다. 즉, 위치값을 적용하고
Normal은 W값이 0이므로, 위치값은 적용 시키지 않고 오직 크기나 방향 등만 적용이 된다.
728x90
'DirectX' 카테고리의 다른 글
모작일지(3) 현재 진행상황 (0) | 2021.08.09 |
---|---|
모작일지(2) (0) | 2021.08.09 |
모작 일지 (1) (0) | 2021.08.05 |
몬스터 -> 플레이어 추적 (내적 이용) (0) | 2021.07.06 |
회전행렬을 이용하여 사각형 회전 (0) | 2021.07.03 |