XNA Math 라이브러리 (행렬)

DirectX11/수학관련 2016. 7. 2. 17:59

행렬을 클래스 자료멤버로 저장할 때엔 XMFLOAT4X4를 사용하는 것을 추천한다.


XMMATRIX의 선언은


union

{

XMVECTOR r[4]; // SIMD를 사용하기위해서 4개의 XMVECTOR을 이용한다.

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];

};


행렬관련 함수들


XMMATRIX XMMatrixIdentity(); // 단위행렬 I를 돌려준다.


BOOL XMMatrixIsIdentity(CXMMATRIX M); // 단위행렬 여부를 알려준다.

XMMATRIX XMMatrixMultiply(CXMMATRIX A, CXMMATRIX B); // 행렬 곱 AB를 돌려준다.


XMMATRIX XMMatrixTranspose( CMMATRIX M); // M의 전치행렬을 돌려준다.


XMVECTOR XMMatrixDeterminant ( CXMMATRIX M); (det M, det M, det M det M)을 돌려준다.


XMMATRIX XMMatrixInverse ( XMVECTOR* pDeterminant, CXMMATRIX M); M의 역행렬을 돌려준다.


XMMATRIX XMMatrixScaling( FLOAT ScaleX, FLOAT ScaleY, FLOAT ScaleZ)


XMMATRIX MXMatrixScalingFromVector( FXMVECTOR Scale );


XMMATRIX XMMatrixRotationX ( FLOAT Angle );


XMMATRIX XMMatrixRotationY( FLOAT Angle ) ;


XMMATRIX XMMatrixRotationZ( FLOAT Angle ) ;


XMMATRIX XMMatrixRotationAxis ( FXMVECTOR Axis, FLOAT Angle );


XMMATRIX XMMatrixTranslation( FLOAT OffsetX, FLOAT OffsetY, FLOAT OffsetZ)


XMMATRIX XMMatrixTranslationFromVector( FXMVECTOR Offset );

XMVECTOR XMVector3Transfrom( FXMVECTOR V, CXMMATRIXM ) ;


XMVECTOR XMVector3TransfromCoord ( FXMVECTOR V, CXMMATRIX M);


XMVECTOR XMVector3TrasnfromNormal ( FXMVECTOR V, CXMMATRIX M);


* 마지막 두함수에서 벡터의 w성분을 신경쓰지 않아도 된다. XMVector3TransfromCoord의 w 값은 항상 1이고 XMVector3TransformNormal은 항상 0이다.



'DirectX11 > 수학관련' 카테고리의 다른 글

XNA Math 라이브러리(벡터)  (0) 2016.07.02
posted by 알쿠미