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

天行健 君子當自強而不息

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>
            精品99视频| 欧美日韩国产精品成人| 日韩一级黄色片| 欧美日韩亚洲一区二区三区| 亚洲精品欧美在线| 欧美一区二区三区婷婷月色| 亚洲国产va精品久久久不卡综合| 亚洲美洲欧洲综合国产一区| 国产丝袜一区二区三区| 亚洲国产专区校园欧美| 午夜精品福利一区二区三区av| 久久狠狠亚洲综合| 在线视频亚洲一区| 亚洲国产日韩欧美综合久久 | 国产小视频国产精品| 久久精视频免费在线久久完整在线看| 亚洲激情视频在线| 亚洲欧美日韩精品久久久久| 国产精品久久久久久久7电影| 久久噜噜亚洲综合| 午夜精品久久久久久| 免费人成精品欧美精品| 久久麻豆一区二区| 亚洲黄色免费| 亚洲一区二区视频| 欧美一区二区日韩| 欧美激情一二区| 欧美午夜一区二区三区免费大片 | 国产精品久久久久aaaa| 一区三区视频| 亚洲精品色婷婷福利天堂| 一区二区福利| 六月丁香综合| 中文高清一区| 欧美日本一区二区高清播放视频| 国产日本欧美在线观看| 99国产精品99久久久久久| 欧美在线欧美在线| 99精品欧美一区二区三区| 亚洲欧美日韩视频二区| 欧美激情欧美激情在线五月| 国产亚洲欧美日韩美女| 亚洲香蕉视频| 亚洲国产精品久久人人爱蜜臀 | 亚洲夫妻自拍| 久久久精品网| 国产精品毛片一区二区三区| 国产精品99久久久久久久vr| 开心色5月久久精品| 亚洲私人黄色宅男| 欧美乱妇高清无乱码| 亚洲国产欧美精品| 久久精品视频免费观看| 99亚洲伊人久久精品影院红桃| 久久久综合视频| 国产欧美视频一区二区三区| 老牛影视一区二区三区| 欧美在线91| 欧美日韩国产高清视频| 国外成人网址| 欧美一区二区三区四区在线观看| 亚洲精品视频免费观看| 久久经典综合| 国产欧美一区在线| 久久av在线| 欧美一区二区三区精品电影| 国产欧美综合一区二区三区| 性高湖久久久久久久久| 亚洲欧美在线aaa| 国产一区二区高清视频| 久久久久.com| 久久亚洲电影| 最新69国产成人精品视频免费| 欧美激情国产日韩| 女人天堂亚洲aⅴ在线观看| 亚洲国产精品一区二区第四页av| 欧美激情按摩| 欧美日本中文字幕| 亚洲摸下面视频| 欧美影院午夜播放| 国产一区二区视频在线观看| 欧美成人国产va精品日本一级| 久久综合电影| 在线亚洲观看| 亚洲综合99| 伊人久久大香线蕉av超碰演员| 欧美jjzz| 欧美午夜在线一二页| 午夜久久久久久| 久久se精品一区精品二区| 亚洲丰满少妇videoshd| 亚洲激精日韩激精欧美精品| 欧美四级剧情无删版影片| 久久久久久一区二区三区| 免费一级欧美片在线观看| 一区二区不卡在线视频 午夜欧美不卡'| 在线一区二区视频| 激情伊人五月天久久综合| 亚洲精品美女| 国产亚洲精品美女| 亚洲日本乱码在线观看| 国语自产精品视频在线看| 亚洲精品久久久一区二区三区| 国产伦精品一区二区三区四区免费| 蜜臀久久久99精品久久久久久| 国产精品v日韩精品| 欧美激情亚洲激情| 国际精品欧美精品| 亚洲午夜高清视频| 91久久黄色| 久久久国产精彩视频美女艺术照福利| av不卡免费看| 久久久av网站| 久久成人免费| 欧美性大战久久久久久久蜜臀 | 香蕉久久一区二区不卡无毒影院| 另类酷文…触手系列精品集v1小说| 99国内精品| 欧美电影资源| 国产农村妇女精品一二区| 99亚洲一区二区| 亚洲国产精品国自产拍av秋霞| 欧美在线观看视频在线| 亚洲欧美国产精品va在线观看| 91久久中文| 一本色道综合亚洲| 黄网站免费久久| 亚洲在线不卡| 99精品国产99久久久久久福利| 欧美一级视频免费在线观看| 夜夜嗨av一区二区三区| 老司机aⅴ在线精品导航| 欧美在线网站| 国产酒店精品激情| 正在播放欧美视频| 亚洲网站视频| 欧美三级电影网| 亚洲精品欧美专区| 亚洲免费高清| 蜜月aⅴ免费一区二区三区| 美女国产精品| 在线成人www免费观看视频| 久久精品视频在线观看| 麻豆成人在线播放| 精品二区视频| 麻豆91精品91久久久的内涵| 亚洲第一在线综合在线| 亚洲精品中文字幕在线| 欧美美女日韩| 亚洲天堂免费观看| 亚洲欧美不卡| 国产主播在线一区| 久久婷婷国产综合国色天香| 欧美二区在线观看| 亚洲九九九在线观看| 欧美日韩精品免费观看视一区二区| 亚洲精品在线电影| 欧美亚洲色图校园春色| 极品尤物久久久av免费看| 女人天堂亚洲aⅴ在线观看| 亚洲精品视频在线播放| 午夜在线精品偷拍| 韩国亚洲精品| 欧美高潮视频| 亚洲在线观看免费| 欧美成人精品高清在线播放| 在线视频欧美日韩精品| 国产精品高清在线| 久久www成人_看片免费不卡| 欧美国产视频在线观看| 亚洲午夜三级在线| 极品日韩av| 国产精品久久一级| 久久手机免费观看| 亚洲在线不卡| 最新日韩在线视频| 久久国产精品久久久久久久久久 | 久久精品女人的天堂av| 欧美国产乱视频| 亚洲视频二区| 狠狠色狠狠色综合| 欧美精品18+| 亚洲图中文字幕| 久久午夜影视| 亚洲五月婷婷| 在线精品一区| 国产精品香蕉在线观看| 免费视频亚洲| 久久精品国产欧美亚洲人人爽| 亚洲欧洲一区二区天堂久久| 久久九九国产| 亚洲在线视频| 亚洲精选在线| 亚洲激情欧美| 国产欧美在线视频| 欧美日韩一级黄| 欧美国产一区二区三区激情无套| 欧美中文在线观看| 亚洲欧美日韩在线播放| 99精品视频一区二区三区|