## D3D编程必备的数学知识（3） 转

rise-worlds

#### D3DX 矩阵

n       向量-矩阵乘法。即，假如1×4的单行矩阵V，和4×4的矩阵T，那么积VT可计算并且返回的结果是一个1×4的单行矩阵（向量）。

n       矩阵-矩阵乘法。即，假如4×4的矩阵T，和4×4的矩阵R，那么积TRRT可计算并且两者返回的结果都是一个4×4的矩阵。注意因为矩阵乘法不满足交换律所以TRRT不一定相等。

``typedef struct D3DXMATRIX : public D3DMATRIX{public:    D3DXMATRIX() {};    D3DXMATRIX(CONST FLOAT*);    D3DXMATRIX(CONST D3DMATRIX&);    D3DXMATRIX(FLOAT _11, FLOAT _12, FLOAT _13, FLOAT _14,               FLOAT _21, FLOAT _22, FLOAT _23, FLOAT _24,               FLOAT _31, FLOAT _32, FLOAT _33, FLOAT _34,               FLOAT _41, FLOAT _42, FLOAT _43, FLOAT _44);    // access grants    FLOAT& operator () (UINT Row, UINT Col);    FLOAT operator () (UINT Row, UINT Col) const;    // casting operators    operator FLOAT* ();    operator CONST FLOAT* () const;    // assignment operators    D3DXMATRIX& operator *= (CONST D3DXMATRIX&);    D3DXMATRIX& operator += (CONST D3DXMATRIX&);    D3DXMATRIX& operator -= (CONST D3DXMATRIX&);    D3DXMATRIX& operator *= (FLOAT);    D3DXMATRIX& operator /= (FLOAT);    // unary operators    D3DXMATRIX operator + () const;    D3DXMATRIX operator - () const;    // binary operators    D3DXMATRIX operator * (CONST D3DXMATRIX&) const;    D3DXMATRIX operator + (CONST D3DXMATRIX&) const;    D3DXMATRIX operator - (CONST D3DXMATRIX&) const;    D3DXMATRIX operator * (FLOAT) const;    D3DXMATRIX operator / (FLOAT) const;    friend D3DXMATRIX operator * (FLOAT, CONST D3DXMATRIX&);    BOOL operator == (CONST D3DXMATRIX&) const;    BOOL operator != (CONST D3DXMATRIX&) const;} D3DXMATRIX, *LPD3DXMATRIX;``

The D3DXMATRIX class inherits its data entries from the simpler D3DMATRIX structure, which is defined as:

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

D3DXMATRIX A(…); // initialize A

D3DXMATRIX B(…); // initialize B

D3DXMATRIX C = A * B; // C = AB

D3DXMATRIX类另一个重要的运算符是小括号，它允许我们非常方便的为矩阵成员赋值。注意当使用小括号时我们的下标就象C语言数组下标一样是从0开始的。例如，为一个矩阵的ij = 11 赋值，我们写成：

D3DXMATRIX M;

M(0, 0) = 5.0f; // Set entry ij = 11 to 5.0f.

D3DX库也提供下列有用的函数：将D3DXMATRIX转化为单位矩阵，转置D3DXMATRIX矩阵以及求逆矩阵。

D3DXMATRIX *D3DXMatrixIdentity(

D3DXMATRIX *pout // 将矩阵转换为单位矩阵

);

D3DXMATRIX M;

D3DXMatrixIdentity( &M ); // M = 单位矩阵

D3DXMATRIX *D3DXMatrixTranspose(

D3DXMATRIX *pOut, // 输出的转置矩阵

CONST D3DXMATRIX *pM // 原矩阵

);

D3DXMATRIX A(...); // 初始化矩阵A

D3DXMATRIX B;

D3DXMatrixTranspose( &B, &A ); // B = 输出的转置矩阵

D3DXMATRIX *D3DXMatrixInverse(

D3DXMATRIX *pOut, // 输出的逆矩阵

FLOAT *pDeterminant, // 除非是必需的，一般设为0

CONST D3DXMATRIX *pM // 原矩阵

);

D3DXMATRIX A(...); // 初始化矩阵

D3DXMATRIX B;

D3DXMatrixInverse( &B, 0, &A ); // B = A的逆矩阵

### rise-worlds

yuer150
2011/04/26
366
3

yuer150
2011/05/02
1K
0

loving_forever_
2016/07/28
0
0

2018/11/08
0
0

2016/04/25
399
0

rsync工具常用选项以及同步的两种方式

rsync -av /etc/passwd /tmp/1.txt #rsync的本机传输写法 rsync -av /tmp/1.txt 192.168.188.128:/tmp/2.txt #rsync的远程传输rsync格式rsync [OPTION] … SRC ......

3
0
GatewayWorker 报错：stream_socket_server(): unable to connect to tcp://0.0.0.0:1238

GatewayWorker 报错：stream_socket_server(): unable to connect to tcp://0.0.0.0:1238 (Address already in use) 官方文档虽然有相同的问题，但是对我的问题没起作用…… 后面发现自己手贱...

wenzhizhong

3
0
REST接口

Airship

6
0
Spring Cloud Config 统一配置中心

Spring Cloud Config 统一配置中心 一、统一配置中心 统一管理配置 通常，我们会使用配置文件来管理应用的配置。如一个 Spring Boot 的应用，可以将配置信息放在 application.yml 文件中，如...

6
0
android ------ AAPT2 error: check logs for details解决方法

AAPT 是全称是 Android Asset Packaging Tool，它是构建 App，甚至是构建 Android 系统都必不可少的一个工具。它的作用是将所有资源文件压缩打包到Android APK 当中。我们在 Android SDK 目录...

3
0