



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、h的:指导别人使用矩阵任务:编写教程,编写代码阅读对象:d3d入门者,c/c卄熟练,windows编程熟练,vc ide熟练 描述:矩阵在3d游戏当中担当着十分重要的角色。虽然在某些方團不如四元数 (quaternion)但是我们不得不承认矩阵是计算机图形学的基础。下面我们就來学习一下这个东东矩阵的概念what are matrices and how do they work?(矩阵是什么和它们怎样工作)矩阵其实是一个高级的数学主题(参看线性代数),所以,在此我只能尽力地、简 要地概括一下。矩阵就像是一个表格,有一定数ei的行与列;每个格了屮都一个数字或 表达式。通过特定的矩阵,我们可以对3
2、d对象中的顶点处标进行运算,来实现类似移 动、旋转、缩放这样的操作。在directx中,矩阵就是4x4的数表。下而的这幅图是一 个矩阵的例子,这个矩阵能使一个对象(由它的所有顶点)缩放到原來的五倍。5 0 0 00 5 0 00 0 5 00 0 0 1那么我们用它来作甚么啊?其实很简单我们仅仅用它来做变换。首先,给出一个点a(x, y, z),它是相对于我们想象空间点o(0, 0, 0)的,如果相对原点改 变为(1, 0, 0)怎么半啊?那么a点变成(x-1, y, z).这么说吧,其实说白了矩阵就是将一个位置的点通过变换矩阵移动到另一个位置(这样 才能产生动画啊!)。你不用把矩阵看的很神秘
3、,你就把它当成一个可以让你随心所欲 的变换位置的工具。基木的矩阵操作函数有以下儿种:1. d3dxmatri xrotationx (d3dxmatrix*out,floatangle) ;/围绕 x 轴转动2. d3dxmatrixrotationy(d3dxmatrix*out,floatangle) ;/围绕 y 轴转动3. d3dxmatrixrotationz(d3dxmatrix*out,floatangle) ; /围绕 z 轴转动4. d3dxmatrixrotationyawpitchroll (d3dxmatrix *out, float x, float y, float
4、 z)/ 在xyz方向上偏移x, y, z大小5. d3dxmatrixscaling(d3dxmatrix *out , float x, float y, float z)/缩放比例6. d3dxmatrixshadow(d3dxmatrlx *out , d3dxvect0r4* plight, d3dxplane *pplane)/ 平面投影矩阵7. d3dxmatrixtrans 1 ation () /建立移动矩阵8. d3dxmatrixtransformation(d3dxmatrlx *pout, d3dxvect0r3 *pscalingcenter, d3dxquater
5、ni0n *pscalingrotation, d3dxvect0r3 *pscaling, d3dxvect0r3 *protationcenter, d3dxquaternion *protation, d3dxvector3 *ptranslation); 这个函数我要给大家仔细的讲一下(竖起耳朵听啊八) 第一个参数:d3dxmatrtx *pout返回的转换炬阵 第二个参数:d3dxvector3 *pscalingcenter 缩放的原点 第三个参数:d3dxquaterni0n * pscalingrotation这是个四元素(什么?什么是四元 索?看来这个函数介绍要花点时间了。d
6、3dxquaternt0n这个结构有四个内容x,y,z,w 其屮xyz表示一个向量,w则表示一个旋转度,该结构表示的是围 xyz向量旋转w) 第四个参数:d3dxvector3 *pscaling缩放向量(同上曲两个参数联系起來那就是在 pscalingcenter 原点,pscaling jj 向上缩放ipscalingl 大小,或旋转 pscalingrotation) 第五个参数:旋转圆点 第六个参数:旋转的四元素 第七个参数:旋转向量当得到你想要的转换矩阵之厉,你就町以用td3dxeffectstatemanager:settransform() 來设置你要操作的对象了,参数说明:d3
7、dtransformstatetype state,转换的类型,一般是 d3dts_vtew(视点转 换), d3dts_pr0jecti0n (项目转换)等d3dmatrix matrix 转换矩阵现在來看看代码吧其他部分都一样,有两个地方需要解释一个是在setup()方法屮,另一个是在display () 方法中d3dxvect0r3 position (0. of, 0. of, -5. of);/d3dxvector3 target (0. of, 0. of, 0. of);d3dxvect0r3 up(0. of, 1. of, 0. of);/以上我们定义了三个向量,这三个向量是
8、用來建立左手观察矩阵的d3dxmatrtx v;d3dxmatrixlookatlh(&v, &position, &target, &up);建立左手观察矩阵的函数概念讲述 左手观察矩阵 下面的两幅图演示了左手3d迪卡尔坐标系统是怎样工作的。left-handed为什么称为左于观察矩阵呢?这样,你将左手平放在胸前,拇指与其他指头垂直,掌心 向上,你可以看到掌心的方向与图2. 3的y方向是一样的食指的方向与x方向是一样的 拇指的方向与z轴的方向是一样的。(你可能会问,那有左于的,就应改有右手的啊, 是的有右手的,只要将图2. 3中的x轴方向反过来就是了)devi
9、ce->settransform(d3dts_viewz &v);设置视点转换 /以下是设置项目转换矩阵d3dxmatrix proj;d3dxmatrixperspectivefovlh(&projzd3dx_pi * 0.5fz / 90 - degree(float)width / (float)height,l.of,1000.of);device->settransform(d3dts_projection, &proj);在display ()方法中需要添加儿行代码d3dxmatrix ry;/申明一个矩阵static float y = 0. of;d3dxmatrixrotationy(&ry, y);/以y的偏移量建立y轴旋转矩阵y += timedelta; /还记得timedelta时代表什么吗?对了它是当前的时间差(上次循环到这次的时 间,很少啊(亳秒艾! ! !)if ( y >= 6.28f ) /为什么要判断大于6.28呢?2口是一周啊片3.14啊,你可以试着改变一下该值 看看冇什么事情发生device->settransform(d3dts_world, &ry);好
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年福建省三明市尤溪县总医院招聘10人考前自测高频考点模拟试题附答案详解(突破训练)
- 药物作用靶点-洞察与解读
- 2025年长庆油田分公司春季招聘(50人)模拟试卷及答案详解(名校卷)
- 2025黑龙江双鸭山市宝清县招聘就业见习人员917人考前自测高频考点模拟试题及答案详解(新)
- 2025广西农信社招考447人职位表考前自测高频考点模拟试题及答案详解(夺冠系列)
- 2025年合肥滨投文化创意发展有限公司招聘3人考前自测高频考点模拟试题及完整答案详解一套
- 2025国网国际发展有限公司第二批高校毕业生录用人选的模拟试卷及答案详解1套
- 2025黑龙江绥化市庆安县招聘教师36人考前自测高频考点模拟试题及答案详解1套
- 2025国有四大银行远程银行中心诚聘客服代表招聘考前自测高频考点模拟试题及答案详解参考
- 热电池安全性研究-洞察与解读
- 大学生禁毒知识竞赛题库题及答案
- 土地承包经营权长期转让协议
- 成人糖尿病食养指南(2023年版)
- 地方病防治技能理论考核试题
- 四川省高等教育自学考试自考毕业生登记表001汇编
- (2024版)初级茶叶加工工理论知识考试题库(含答案)
- 北京市-实验动物上岗证培训考试题库
- 不锈钢加工及安装合同集合
- 妊娠期高血压用药
- 第十三章泌尿男性疾病
- 我不是完美小孩
评论
0/150
提交评论