D3DX庫中表示4×4的矩陣的類:D3DXMATRIX
阿新 • • 發佈:2018-11-22
編寫Director3D應用程式時,我們通常只使用4×4的矩陣以及1×4的行向量。
注意:使用這兩種維數的矩陣,意味著一下的乘法是有意義的:
1、向量——矩陣乘法,若v是1×4的行向量,T為4×4的矩陣,則乘積vT是有意義的,是1×4的行向量
2、矩陣——矩陣乘法,若T和R都是4×4的矩陣,則乘機就是4×4的矩陣,乘積TR和RT都有意義,但是TR和RT不一定相等
在D3DX中可以使用D3DXVECTOR3和D3DXVECTOR4類表示向量 ,不過D3DXVECTOR3裡面只包含3個分量,具體類的內容可以檢視:D3DX庫中表示3D空間向量的類:D3DXVECTOR3
在D3DX中表示4×4的矩陣,可以使用類:D3DXMATRIX,定義如下:
typedef struct D3DXMATRIX:public D3DMATRIX{ public: D3DXMATRIX() {}; D3DXMATRIX(CONST FLOAT*); D3DXMATRIX (CONST D3DMATRIX& ); D3DXMATRIX (CONST D3DXFLOATI6*); D3DXMATRIX( FLOAT _11, FLOAT _12, FLONT _13, FLOAT _14, FLOAT _21, FLOAT _22, FLOAT _23, FLONT _24, FLOAT _31, FLOAT _32, FLOAT _33, FLORT _34, FLOAT _34, FLOATL_42, FLOAT _43, FLOAT _44 ); FLOAT& operator() (UNIT Row, UINT Col); FIOAT& operator() (UNIT Row, UINT Col)const; operate FLOAT* (); operate CONST FLOAT* () const; D3DXMATRIX& operator *= (CONST D3DXMATRIX&); D3DXMATRIX& operator += (CONST D3DXMATRIX&); D3DXMATRIX& operator -= (CONST D3DXMATRIX&); D3DXMATRIX& operator *= (FLOAT); D3DXMATRIX& operator /= (FLOAT); D3DXMATRIX operator +()const; D3DXMATRIX operator -()const; D3DXMATRIX operator *(CONST D3DXMATRIX&)const; D3DXMATRIX operator +(CONST D3DXMATRIX&)const; D3DXMATRIX operator -(CONST D3DXMATRIX&)const; D3DXMATRIX operator *(CONST D3DXMATRIX&)const; D3DXMATRIX operator /(CONST D3DXMATRIX&)const; friend D3DXMATRIX operator *(FLOAT,CONST D3DXMATRIX&); BOOL operator ==(CONST D3DXMATRIX&)const; BOOL operator !=(CONST D3DXMATRIX&)const; }D3DXMATRIX,*LPD3DXMATRIX;
類裡面的資料成員繼承自結構體:D3DMATRIX,其定義如下:
union{
struct {
float 11,12,13,14;
float 21,22,23,24;
float 31,21,33,34;
float 41,42,43,44;
}
float m[4][4];
}D3DMATRIX;