清华大学DirectX游戏编程第1章(全20章).ppt

清华大学DirectX游戏编程第1章(全20章).ppt

ID:51588251

大小:2.10 MB

页数:45页

时间:2020-03-24

清华大学DirectX游戏编程第1章(全20章).ppt_第1页
清华大学DirectX游戏编程第1章(全20章).ppt_第2页
清华大学DirectX游戏编程第1章(全20章).ppt_第3页
清华大学DirectX游戏编程第1章(全20章).ppt_第4页
清华大学DirectX游戏编程第1章(全20章).ppt_第5页
资源描述:

《清华大学DirectX游戏编程第1章(全20章).ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第1章基本的数学概念主要目标:向量几何和向量代数的基本知识以及它们在三维计算机图形学中的应用。矩阵和矩阵运算以及如何利用矩阵进行三维几何变换。如何建立点线代数模型以及如何在三维图形设计中使用它们。熟悉D3DX中提供的数学类和函数,并用它们来完成三维数学运算。21.1三维空间中的向量使用带箭头的直线段来表示向量,如图1.1所示。用于描述向量的两个属性是长度(也称为数量或者标量)和方向。在图1.2中描述了一个左手坐标系和一个右手坐标系。31.1三维空间中的向量图1.3显示的是将图1.1中的向量移动到标准位置的结果,在标准位置下

2、指定坐标系中的向量,这时候注意向量u和v重合在一起,只是因为这两个向量相等。在三维向量中有4个特殊的向量(如图1.4所示)。在D3DX库中,可以使用D3DXVECTOR3类来代表三维向量,在D3DX中该类的定义如下:参见教材P541.1.1向量的相等几何上,如果两个向量方向和长度都相同,那么这两个向量就相等。在代数上,我们说如果它们拥有相同的维数并且它们拥有相等的分量,那么它们相等。在代码中,可以通过重载“=”运算符来检测两个向量是否相等:D3DXVECTORu(1.0f,0.0f,1.0f);D3DXVECTORv(0.

3、0f,1.0f,0.0f);if(u==v)returntrue;51.1.2向量模的计算几何上,向量的模就是一个有向线段的长度。如果知道了向量的所有属性,就可以通过如下的方法来进行向量模的计算:在D3DX库中,可以使用如下函数计算向量的模:FLOATD3DXVec3Length(//返回值为向量的模CONSTD3DXVECTOR3*pV//所要计算的D3DXVECTOR3类型的向量);D3DXVECTOR3v(1.0f,2.0f,3.0f);floatmagnitude=D3DXVec3Length(&v);//计算向量

4、的模61.1.3向量归一化单位向量指模为1的向量,归一化向量就是指将一般向量转换为单位向量。可以通过将向量的所有分量除以向量的模来得到单位向量,如下所示:通过D3DX库,可以使用如下函数进行向量的归一化:D3DXVECTOR3*D3DXVec3Normalize(D3DXVECTOR3*pOut,//ResultCONSTD3DXVECTOR3*pV//Thevectortonormalize);71.1.4向量加法可以通过将两个向量的分量分别相加来进行向量加法的计算。图1.5是向量加法的几何表示。在程序中进行加法运算时,

5、可以进行“+”运算符的重载:D3DXVECTOR3u(2.0f,0.0f,1.0f);D3DXVECTOR3v(0.0f,-1.0f,5.0f);//(2.0+0.0,0.0+(-1.0),1.0+5.0)D3DXVECTOR3sum=u+v;//=(2.0f,-1.0f,6.0f)81.1.5向量减法与加法类似,向量的减法也是通过对向量的所有分量进行减法运算。如图1.6所示为向量减法的几何表示。同样在D3D中通过重载“-”运算符进行向量减法:D3DXVECTOR3u(2.0f,0.0f,1.0f);D3DXVECTOR3

6、v(0.0f,-1.0f,5.0f);D3DXVECTOR3difference=u-v;//=(2.0f,1.0f,-4.0f)91.1.6数乘可以将向量和一个标量相乘,就像名字所说明的那样,使向量的数量大小发生改变。这个运算得到的向量将不会改变向量的方向,除非是与一个负标量相乘,那么就会使原向量的方向翻转:ku=(kux,kuy,kuz)在D3DXVECTOR3类中提供了“*”运算符:D3DXVECTOR3u(1.0f,1.0f,-1.0f);D3DXVECTOR3scaledVec=u*10.0f;//=(10.0f

7、,10.0f,-10.0f)101.1.7点乘点乘是向量在代数学上定义的两种算法之一,它通过如下的方法计算:点乘运算的主要属性如下:如果=0,那么向量之间的夹角等于0度。如果>0,那么向量之间的夹角小于90度。如果<0,那么向量之间的夹角大于90度。111.1.7点乘在D3DX的函数库中使用如下的函数进行两个向量之间的点乘计算:FLOATD3DXVec3dot(//Returnstheresult.CONSTD3DXVECTOR3*pV1,//Leftsidedoperand.CONSTD3DXVECTOR3*pV2//R

8、ightsidedoperand.);D3DXVECTOR3u(1.0f,-1.0f,0.0f);D3DXVECTOR3v(3.0f,2.0f,1.0f);//1.0*3.0+-1.0*2.0+0.0*1.0//=3.0+-2.0floatdot=D3DXVec3dot(&u,&v);//=1.0121

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。