1 / 11
文档名称:

矩阵论三维图形应用.docx

格式:docx   大小:462KB   页数:11页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

矩阵论三维图形应用.docx

上传人:wwlgqnh 2020/9/14 文件大小:462 KB

下载得到文件列表

矩阵论三维图形应用.docx

相关文档

文档介绍

文档介绍:矩阵在计算机三维图形变换中的应用姓名:余章权学号:班级:学院:数学与统计学院矩阵在计算机三维图形变换中的应用摘要:论述如何利用矩阵的变换性质实现计算机的三维图形变换,主要是通过平移、缩放和旋转三种基本变换的组合来实现的,利用矩阵可以是图形处理高速化。关键词:平移、缩放、旋转1引言三维图形图像的处理,显示和形体构造需要使用三维几何变换,这些变换是通过基本的平移,缩放和旋转组合而成的,每一个变化都可以表示为矩阵变换的形式,通过矩阵的相乘或连续可以构造复杂的变换。2矩阵与图形变换计算机对图形的处理,经常用到各种变换,若用解析式表示坐标变换,计算过程和缩放程序都很复杂,用矩阵表示图形的坐标变换,特别是复合变换就显得比较简单,利用矩阵进行计算,可使图形处理高速化。事实上,对于一个空间图形,图形上每一个点都对应着唯一的坐标(x,y,z),它的标准化齐次坐标为一个四维的向量。设T为4X4变换矩阵:其个元素的性质为:a,b,c,d,e,f,g,h,i产生比例,反射,旋转,错位变换,l,m,n产生沿x轴,y轴,z轴的平等移动。P,q,r产生***变换,s产生全比例变换。利用变换矩阵T可以对三维坐标进行各种变换,其基本关系式为:一般地,对图形对平移变换的变换矩阵为:其中l,m,n分别沿x轴,y轴,z轴的方向的平移量,其坐标关系式为:对图形做比例变换矩阵为:a,e,i分别表示坐标x,y,z的放大率,其坐标关系为:当a,e,i均等于1时,则变换矩阵为:T=这时T产生全比例变换,其中S为整个图形的放大率,当s>1时整个图形缩小,当s<1时整个图形放大。对图形作错移变换的变换矩阵为:T=对图形作关于xoy平面的反射变换的变换矩阵为:T=将图形绕x轴旋转角的变换矩阵为:T=将图形绕y轴旋转角的变换矩阵为:T=如果要对图形连续施行几种变换,则它的变换矩阵就是几个相应变换后矩阵的乘积,如对点A(x,y,z)先作比例变换,然后再绕y轴旋转角,则新旧坐标关系为:(x,y,z,1)=3利用矩阵进行三维图形变换设三维孔家那种任意一点的齐次坐标p(x,y,z,1),作三维图形得打的点的齐次坐标为p’(x’,y’,z’,1)可得下面三维图形集合变换矩阵。,而不改变其方向和大小。式中,Dx,Dy,Dz分别是沿x轴,y轴,z轴方向上的平移量,图1是三维平移变换示意图。,该比例变换以坐标原点为参考点,上式中的分别是沿x轴,y轴,z轴方向上的缩放比例,图2是以坐标原点为参考点的三维比例变换示意图。如果要以三维空间中的任意一点(x0,y0,z0)为参考点作比例变换,先平移至原点作比例变换后再平移回到点(x0,y0,z0),比例变换矩阵为:,旋转的正方向通常按右手定则确定,即右手拇指指向转轴方向,其余四指指向便是旋转角的正交(如图3)。旋转变换后形体的大小和形状不发生变化,只是空间位置相对原位置发生了变化。绕x轴旋转:,其中为图形绕x轴旋转的角度;绕y轴旋转:其中为图形绕y轴旋转的角度;绕z轴旋转:其中为图形绕z轴旋转的角度。4旋转矩阵设o-x1y1z1和o-xkykzk是以o为同一原点的不同坐标系,对应的基向量分别为和,则同一矢量可以用两种不同的基表示出来。,其中为向量的坐标阵列,右边等式的两边用点乘,得到:,其中Alk为3X3标量矩阵,定义为:由此式可以判断,相同元素之间的选择矩阵为三阶单位矩阵,即All(Akk)=E,并且于实际情况符合。我们用以下算例来实现旋转阵的应用:5三维图形变换的统一矩阵面计算机绘制物体的投影图,是将三维空间的物体用二维平面上的图形来表示,因此,需要进行图形变换,而进行图形变换行之有效的方法是矩阵机器运算。常用的三维图形变换矩阵有绕z轴的旋转矩阵S1,绕x轴的旋转矩阵S2,平移矩阵S3,向y面的正投影矩阵S4,它们分别为其中φ分别为绕z轴和x轴旋转的角度,l,m,n为平移参数6计算机三维变换使用矩阵Direct3D使用矩阵来执行3—D变换,解释了矩阵是如何来建立三维变换。描述了一些变换的基本用法以及如何通过矩阵合并来完成复杂的变换,平移Translation旋转Rotation,缩放Scaling。在Direct3D程序中,,下面的例子展示了Translate函数的源码:D3DMATRIXTranslate(){D3DMTRxret=identityMatrix();Ret()=dx;Ret()=dy;Ret()=dz;Retur