D3DX库中表示4×4的矩阵的类:D3DXMATRIX

编写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;

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值