青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天行健 君子當自強而不息

D3D編程必備的數學知識(3)

矩陣

在這一部分我們關注的焦點是數學中的矩陣。它們在3D圖形學中的應用將在下一部分講解。

一個m×n的矩陣是由m行和n列的數字組成的矩陣列。行和列的數字就是這個矩陣的維數。我們通過寫在下方的數字識別矩陣清單,數字中的第一個表示行第二個表示列。例如下邊的M是3×3矩陣,B是2×4矩陣, C是3×2矩陣。

我們使用加粗的大寫字母表示矩陣。有時一個矩陣只包含一行或者一列。我們用行矩陣和列矩陣這個特殊的名稱來稱呼。例如下邊就是行和列矩陣:

 

當使用行或列矩陣時,我們只用一個下標,有時我們還用字母表示。

 

 

 

 

D3DX 矩陣

當設計Direct3D應用程序時,使用4×4矩陣和1×4行矩陣(向量)是有代表性的。注意使用這兩種矩陣意味著可以進行下列定義的矩陣乘法。

n       向量-矩陣乘法。即,假如1×4的單行矩陣V,和4×4的矩陣T,那么積VT可計算并且返回的結果是一個1×4的單行矩陣(向量)。

n       矩陣-矩陣乘法。即,假如4×4的矩陣T,和4×4的矩陣R,那么積TRRT可計算并且兩者返回的結果都是一個4×4的矩陣。注意因為矩陣乘法不滿足交換律所以TRRT不一定相等。

在D3DX中表示1×4的行矩陣(向量),我們用D3DXVECTOR3和D3DXVECTOR4向量類。當然D3DXVECTOR3只有3個成員,不是4個。然而,第4個成員缺省是1或0(在下一部分有更多信息)。

在D3DX中表示4×4的矩陣,我們用D3DXMATRIX類,定義如下:

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類發現有很多有用的運算符,比如對矩陣檢測相等,矩陣相加和矩陣相減,標量與矩陣相乘,類型轉換(casting),以及非常重要的兩個D3DXMATRIXs相乘。因為矩陣相乘是非常重要的,我們給出一段實例代碼:

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 = 輸出的轉置矩陣

 

假如我們將不能求逆的矩陣用求逆函數,那么函數將會返回null.同樣的,這本書我們忽視第二個參數,并且總是把它設置為0。

D3DXMATRIX *D3DXMatrixInverse(

       D3DXMATRIX *pOut, // 輸出的逆矩陣

       FLOAT *pDeterminant, // 除非是必需的,一般設為0

       CONST D3DXMATRIX *pM // 原矩陣

);

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

D3DXMATRIX B;

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


posted on 2008-03-12 12:18 lovedday 閱讀(2529) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


公告

導航

統計

常用鏈接

隨筆分類(178)

3D游戲編程相關鏈接

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美国产日韩一区二区| 亚洲一区二区三区中文字幕| 欧美 日韩 国产在线| 久久久噜噜噜久久中文字免| 久久激情中文| 久久久精品国产免费观看同学| 久久av资源网| 久久精品国产亚洲一区二区| 久久亚洲国产精品日日av夜夜| 欧美sm极限捆绑bd| 欧美日韩亚洲天堂| 国产女人18毛片水18精品| 国产一区二区三区四区hd| 亚洲第一在线视频| 亚洲在线免费| 欧美不卡视频一区发布| 亚洲精品偷拍| 久久精品1区| 欧美日韩精品一区二区三区| 国产欧美一区二区三区另类精品 | 久久精品视频网| 欧美成人a视频| 一本色道久久综合亚洲精品按摩| 久久不射中文字幕| 欧美日韩在线另类| 亚洲第一页在线| 亚洲专区一区二区三区| 裸体女人亚洲精品一区| 亚洲色图综合久久| 欧美大片一区二区| 狠狠色综合一区二区| av成人免费在线观看| 国外成人在线视频| 农村妇女精品| 一本一本久久| 欧美成人免费全部| 国产一区91精品张津瑜| 亚洲视频综合在线| 牛牛国产精品| 欧美中文字幕在线| 国产精品乱码一区二三区小蝌蚪 | 在线性视频日韩欧美| 久久在线视频在线| 亚洲女与黑人做爰| 欧美性大战久久久久久久蜜臀| 亚洲国产免费看| 久久综合国产精品| 欧美在线网站| 国产在线精品一区二区夜色| 欧美一区久久| 午夜精品久久久久久久久久久| 国产精品女人毛片| 欧美一区激情| 欧美一区深夜视频| 国产一区二区成人| 久久久综合网站| 久久激情综合网| 在线精品视频一区二区| 欧美大片免费| 欧美激情一区二区三区| 99热在这里有精品免费| 亚洲欧洲一区二区三区在线观看| 久久久久国产精品人| 国产午夜精品理论片a级大结局| 午夜久久美女| 午夜一区二区三区在线观看| 国产一区二区日韩| 久热精品视频在线| 免费h精品视频在线播放| 亚洲人成网站777色婷婷| 91久久精品国产91性色| 欧美人妖在线观看| 亚洲一区图片| 欧美一区二区精美| 亚洲经典三级| 99在线精品视频| 国产精品久久久亚洲一区 | 亚洲免费在线| 亚洲欧美日韩电影| 在线观看日韩欧美| 亚洲人成亚洲人成在线观看图片| 欧美日韩一区在线观看视频| 性一交一乱一区二区洋洋av| 久久精品水蜜桃av综合天堂| 亚洲黄色免费电影| 在线亚洲免费视频| 尤物精品国产第一福利三区 | 国产精品久久9| 久久99在线观看| 久久久久九九九| 亚洲视频综合在线| 久久九九99视频| 日韩视频在线永久播放| 亚洲字幕在线观看| 亚洲精品老司机| 亚洲男女自偷自拍| 亚洲美洲欧洲综合国产一区| 亚洲在线一区| 亚洲伦理精品| 欧美在线视频一区二区三区| 一本久久青青| 久久久蜜桃一区二区人| 亚洲综合大片69999| 久久综合给合久久狠狠色| 亚洲欧美另类在线观看| 久久人人97超碰精品888| 亚洲欧美久久久久一区二区三区| 久久综合九色综合网站| 亚洲欧美日韩精品久久久久| 欧美成人激情在线| 久久亚洲欧洲| 国产日韩欧美不卡| 日韩午夜高潮| 亚洲激情综合| 久久免费视频网站| 久久精品国产亚洲aⅴ| 欧美午夜女人视频在线| 亚洲日产国产精品| 亚洲第一主播视频| 午夜精品久久久久久久99水蜜桃| 中文日韩在线视频| 欧美国产乱视频| 女同性一区二区三区人了人一| 国产精品综合久久久| 91久久亚洲| 亚洲另类黄色| 欧美激情影音先锋| 亚洲福利在线观看| 亚洲第一黄网| 久久久精品免费视频| 欧美一区二区三区免费观看| 欧美人与性动交α欧美精品济南到| 免费不卡在线观看| 亚洲电影在线看| 蜜臀91精品一区二区三区| 久久裸体视频| 国内精品久久久久影院薰衣草| 欧美一级大片在线免费观看| 久久精品伊人| 亚洲电影专区| 欧美va天堂在线| 亚洲开发第一视频在线播放| 一区二区三区欧美亚洲| 国产精品第三页| 亚洲欧美在线视频观看| 久久久噜噜噜| 亚洲国产一区二区三区高清 | 国产欧美日韩| 久久久精品一区二区三区| 久久天堂av综合合色| 在线播放国产一区中文字幕剧情欧美 | 欧美高清视频一区二区| 经典三级久久| 欧美国产日韩在线| 亚洲日本精品国产第一区| 在线亚洲一区二区| 国产精品狼人久久影院观看方式| 亚洲欧美www| 猛干欧美女孩| 一本色道久久综合亚洲精品小说| 欧美午夜不卡影院在线观看完整版免费| 一区二区三区不卡视频在线观看 | 亚洲狠狠丁香婷婷综合久久久| 亚洲精品午夜| 国产精品yjizz| 欧美一区日本一区韩国一区| 欧美福利影院| 亚洲欧美一区二区三区久久| 国产一区视频网站| 欧美激情综合五月色丁香小说 | 久久视频这里只有精品| 亚洲黄色成人网| 欧美诱惑福利视频| 亚洲精品久久7777| 国产精品乱子乱xxxx| 久久国产欧美日韩精品| 亚洲精品日本| 久久尤物视频| 亚洲尤物精选| 91久久精品一区| 国产欧美日韩视频在线观看| 欧美成人国产| 久久精品国产精品亚洲精品| 日韩天堂av| 欧美激情一区二区三区在线视频观看 | 欧美黄色大片网站| 亚洲一区美女视频在线观看免费| 免费观看成人网| 性xx色xx综合久久久xx| 99综合视频| 亚洲黄色在线观看| 激情久久五月| 国产午夜亚洲精品理论片色戒| 欧美日本免费一区二区三区| 久久久国产一区二区| 亚洲图片欧美一区| 日韩视频免费观看高清在线视频 | 亚洲国产一区二区三区a毛片| 欧美在线亚洲在线| 亚洲女同性videos|