清华大学directx游戏编程.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
清华大学directx游戏编程

第1章 基本的数学概念 主要目标: 向量几何和向量代数的基本知识以及它们在三维计算机图形学中的应用。 矩阵和矩阵运算以及如何利用矩阵进行三维几何变换。 如何建立点线代数模型以及如何在三维图形设计中使用它们。 熟悉D3DX中提供的数学类和函数,并用它们来完成三维数学运算。 1.1 三维空间中的向量 使用带箭头的直线段来表示向量,如图1.1所示。用于描述向量的两个属性是长度(也称为数量或者标量)和方向。 在图1.2中描述了一个左手坐标系和一个右手坐标系。 1.1 三维空间中的向量 图1.3显示的是将图1.1中的向量移动到标准位置的结果,在标准位置下指定坐标系中的向量,这时候注意向量u和v重合在一起,只是因为这两个向量相等。 在三维向量中有4个特殊的向量(如图1.4所示)。 在D3DX库中,可以使用D3DXVECTOR3类来代表三维向量,在D3DX中该类的定义如下: 参见教材P5 1.1.1 向量的相等 几何上,如果两个向量方向和长度都相同,那么这两个向量就相等。在代数上,我们说如果它们拥有相同的维数并且它们拥有相等的分量,那么它们相等。 在代码中,可以通过重载“=”运算符来检测两个向量是否相等: D3DXVECTOR u(1.0f, 0.0f, 1.0f); D3DXVECTOR v(0.0f, 1.0f, 0.0f); if(u == v) return true; 1.1.2 向量模的计算 几何上,向量的模就是一个有向线段的长度。如果知道了向量的所有属性,就可以通过如下的方法来进行向量模的计算: 在D3DX库中,可以使用如下函数计算向量的模: FLOAT D3DXVec3Length( // 返回值为向量的模 CONST D3DXVECTOR3 *pV // 所要计算的D3DXVECTOR3类型的向量 ); D3DXVECTOR3 v(1.0f, 2.0f, 3.0f); float magnitude = D3DXVec3Length(v); // 计算向量的模 1.1.3 向量归一化 单位向量指模为1的向量,归一化向量就是指将一般向量转换为单位向量。可以通过将向量的所有分量除以向量的模来得到单位向量,如下所示: 通过D3DX库,可以使用如下函数进行向量的归一化: D3DXVECTOR3* D3DXVec3Normalize( D3DXVECTOR3 *pOut, // Result CONST D3DXVECTOR3 *pV // The vector to normalize ); 1.1.4 向量加法 可以通过将两个向量的分量分别相加来进行向量加法的计算。 图1.5是向量加法的几何表示。 在程序中进行加法运算时,可以进行“+”运算符的重载: D3DXVECTOR3 u(2.0f, 0.0f, 1.0f); D3DXVECTOR3 v(0.0f, -1.0f, 5.0f); // (2.0 + 0.0, 0.0 + (-1.0), 1.0 + 5.0) D3DXVECTOR3 sum = u + v; // = (2.0f, -1.0f, 6.0f) 1.1.5 向量减法 与加法类似,向量的减法也是通过对向量的所有分量进行减法运算。 如图1.6所示为向量减法的几何表示。 同样在D3D中通过重载“-”运算符进行向量减法: D3DXVECTOR3 u(2.0f, 0.0f, 1.0f); D3DXVECTOR3 v(0.0f, -1.0f, 5.0f); D3DXVECTOR3 difference = u - v; // = (2.0f, 1.0f, -4.0f) 1.1.6 数乘 可以将向量和一个标量相乘,就像名字所说明的那样,使向量的数量大小发生改变。这个运算得到的向量将不会改变向量的方向,除非是与一个负标量相乘,那么就会使原向量的方向翻转: ku = (kux, kuy, kuz) 在D3DXVECTOR3类中提供了“*”运算符: D3DXVECTOR3 u(1.0f, 1.0f, -1.0f); D3DXVECTOR3 scaledVec = u * 10.0f; // = (10.0f, 10.0f, -10.0f) 1.1.7 点乘 点乘是向量在代数学上定义的两种算法之一,它通过如下的方法计算: 点乘运算的主要属性如下: 如果=0,那么向量之间的夹角等于0度。 如果0,那么向量之间的夹角小于90度。 如果0,那么向量之间的夹角大于90度。 1.1.7 点乘 在D3DX的函数库中使用如下的函数进行两个向量之间的点乘计算: FLOAT D3DXVec3d

文档评论(0)

celkhn0303 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档