서적 정리/DirectX11을 이용한 3D 게임 프로그래밍 입문
15.XNA Math 라이브러리의 행렬 관련 기능
민돌이2
2022. 1. 20. 17:10
1.4 × 4 행렬을 위한 형식
XNA Math 라이브러리에는 4 × 4 행렬을 나타내는 XMMATRIX라는 클래스가 존재한다.
_XMMATRIX(); //행렬 기본생성자
//네 개의 행벡터를 지정행서 행렬 초기화
_XMMATRIX(FXMVECTOR R0, FXMVECTOR R1, FXMVECTOR R2, FXMVECTOR R3);
//성분 16개를 지정해서 행렬 초기화
_XMMATRIX(
FLOAT m00, FLOAT m01, FLOAT m02, FLOAT m03,
FLOAT m10, FLOAT m11, FLOAT m12, FLOAT m13,
FLOAT m20, FLOAT m21, FLOAT m22, FLOAT m23,
FLOAT m30, FLOAT m31, FLOAT m32, FLOAT m33);
//부동소수점 한 개로 16개의 배열을 지정해서 행렬 초기화
_XMMATRIX(CONST FLOAT *pArray);
FLOAT operator() (UINT Row, UINT Column) const
{ return m[Row][Column]; }
FLOAT& operator() (UINT Row, UINT Column) const
{ return m[Row][Column]; }
_XMMATRIX& operator=(CONST _XMMATRIX& M);
XNA Math 라이브러리 문서화는 행렬을 클래스 자료 멤버로 저장할 때 XMFLOAT4X4를 사용할 것을 추천한다.
typedef struct _XMFLOAT4X4
{
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];
};
};
2.행렬 관련 함수들
XNA Math 라이브러리에는 행렬 관련 함수들이 구현되어 있다.
XMMATRIX XMMatrixIdentity(); //단위행렬 I 반환
BOOL XMMatrixIsIdentity(CXMMATRIX M); //매개변수 M이 단위행렬 여부 반환
XMMATRIX XMMatrixMultiply(CMMATRIX A, CMMATRIX B); //행렬 곱 AB 반환
XMMATRIX XMMatrixTranspose(CXMMATRIX M); //M의 전치행렬 반환
XMMATRIX XMMatrixDeterminant(CXMMATRIX M); //벡터 (detM, detM, detM, detM) 반환
XMMATRIX XMMatrixInverse(XMVECTOR* pDeterminant CXMMATRIX M); //M의 역행렬 반환
728x90