计算机图形学显示变换算法具体程序实现_第1页
计算机图形学显示变换算法具体程序实现_第2页
计算机图形学显示变换算法具体程序实现_第3页
计算机图形学显示变换算法具体程序实现_第4页
计算机图形学显示变换算法具体程序实现_第5页
已阅读5页,还剩4页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数学与软件科学学院 实验报告学期:_2010 至_2011 第_一_ 学期 2010年12月21日课程名称:_计算机图形学 _ 专业:_信息与计算科学_ 2007级_5_班实验编号: 07 实验项目_显示变换_ 指导教师_庞朝阳_ 姓名: 学号: 20070605 _实验成绩:实验目的:(1) 了解掌握显示变换的相关知识,知道什么是平行投影和透视投影;实验内容:(1) 知道显示变换是什么;(2) 掌握平行投影变换;(3) 掌握透视投影变换;(4) 编写并执行简单的Prolog程序,并熟悉测试或调试的方法。实验步骤:(1)显示变换 三维空间中的物体要在二维的屏幕显示出来,必须通过投影的方式把三维

2、物体转换成二维的平面图形。投影的方式有平行投影,透视投影。平行投影变换(2)平行投影变换 平行投影可根据投影方向与投影面的夹角分为:正投影和斜投影。当投影方向与投影面垂直时,为正投影;否则为斜投影。正投影假设投影平面垂直于Z轴,且位于Z=Z0外,则在视坐标系中任意一点(X,Y,Z)的投影是过该点的投影线与投影平面的交点,如下图: P(x,y,z) p(x,y,z) Z0 Z则空间点的坐标与投影坐标间关系为: x=x , y=y , z=z 即 = . 2.若投影面与XY平面重合,即Z0=0,则有: = . 即平面投影的变换矩阵为: Mz(平)= 同理可得:在y0z平面的投影变换矩阵为:Mx(平

3、) = 在x0z平面的投影变换矩阵为:My(平) = 2.斜投影如下图XZYACBP求空间中任意一点D(x,y,z)在斜面ABC上的投影。Step1:确定一定Q,并过P作斜面的法向量。 由=(1,0,1) ,=(0,1,-1) 及 = * =(1,1,1) 。单位值得:=。 P点坐标为P(1/2,0,1/2)。Step2:将过点的法向量 平移到原点O,记该平移变换为T=。Step3:将平移后的法向量 (连同斜面)绕x轴旋转角度,使斜面与xOz面垂直,则: cos=,则= , sin=,即: R=Step4:记旋转后法向量为,则有: = R*= 记与z轴的夹角为,则tan =,即sin=,cos

4、=。Step5:使连同斜面)绕y轴旋转-角度后与z轴重合,即斜面与xOy面重合,则: R=Step6:绕z轴向xOy面平行投影(正投影),则有: M=Step7:作一系列逆变换,使P点还原到原来位置。像上:对任意点D(x,y,z),它在斜面ABC上的投影记为D(x,y,z,),则有 =T*R*R* R* R* T* 如原点(0,0,0)在斜面ABC上的投影点为(1/3, 1/3, 1/3)透视投影变换 据投影定义,空间任意一点的透视投影是投影中心与空间点构成的投影线与投影平面的交点。 假设视点(投影中心)为E(0,0,d),投影平面为xOy面,空间中任意一点记为P(x,y,z),求P点在xOy

5、面上的像点P(x,y,z)及P到P点的变换矩阵M。如下图所示:求解:利用三角形相似原理 则有:=*=* 即M=。若记为:(x,y,z,H)=(x,y,z,1)* M则M=同理,若视点E在y轴上,即E(0,d,0),且投影面为xOz平面,则有:M=或若视点E在x轴上,即E(d,0,0),且投影面为yOz平面,则有:=或视坐标系与视变换(斜方向投影) 前面得到的是特殊情况下的透视和平行投影的变换矩阵,而实际情况往往需要在一般情况下进行投影变换。 首先根据场景要求建立一视坐标系(如下图),然后构建一个视平面(也称投影平面),使该平面与z轴垂直。显示过程即是场景中物体从世界坐标转换成视坐标。最后,把视

6、坐标再投影到视平面。Step1:建立视坐标系。 1.取视平面(投影平面)的法矢量为视坐标系的z轴方向。记为z单位矢量。 2.记视平面中心P为视坐标系原点,P(x,y,z),则存在平移矢量=(x,y,z). 3.取y,使y*z=04.由x= y*z确定视坐标的x轴,从而得到视坐标系(P,x).Step2:求世界坐标系(O,x)到视坐标(P, x, y,z)的变换。 x=(1,0,0),y=(0,1,0) ,z=(0,0,1) 设x=u* x+m* y+n* z y=u* x+m* y+n* z z=u* x+m* y+n* z 考虑到原点(平移变换),则有: (x,y,z,P)=(x,y,z,O

7、)*M 且:M=Step3:求世界坐标中任意一点P(x,y,z)在视平面内的投影P(x,y,z)。(p在z的负向)。 则有:= T*M*.其中:T=。.求侧面在xOy面的投影思路:RRTP 即:=R*R*T*P*T* R* R*窗口到视区的变换。 由于在图形显示时往往只需要显示某一部分,这时可以在投影面上定义一个窗口,只有在窗口内的图形才被显示,而窗口外的部分则不显示。在屏幕上也可定义一个矩形,称为视区。经过窗口到视区的变换,窗口内的图形才能变换到视区中显示。假设窗口的左下角顶点坐标为(WXL,WYB),右下角顶点坐标为(WXR,WYT)视区左下角为(VXL,VYT),右下角顶点为(VXR,VYT),则要将窗口内的点(x,y),映射到视区内的点(x,y),则据相似原理有: = , =由此可得:x=VXL+( x-WXL)*s y=VYB+( y-VYB)*s其中:s= , s= 上述窗口到视区变换,也可通过一系列变换的组合得到。变换过程如下: Step1:将窗口左下角顶点(WXL,WYB)平移至窗口所在坐标T。 Step2:进行缩放变换,使窗口大小与视区相等T。 Step3:将窗口内的点映射到视区中,再进行反平移,将视区左下角

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论