三维投影变换的MATLAB实现
2016-12-22唐飞杨伟查长礼
唐飞 杨伟 查长礼
摘要:三维图形变换需要对形体顶点的齐次坐标矩阵进行复合计算,计算繁琐且变换过程晦涩抽象,使用传统的程序设计语言实现图形变换的可视化非常困难。因为在三维图形变换中引入MATLAB工具,利用其强大的矩阵运算能力和丰富的图形处理能力,能够快速准确地计算矩阵和输出图形,清晰直观地展现图形变换的方法和过程。
关键词:三维图形变换;矩阵;MATLAB;投影;计算机图形学
中图分类号:TH126.2文献标志码:A
文章编号:1672-1098(2016)02-0036-04
Abstract:A very complex calculation of homogeneous coordinate vertex matrix is needed in 3D graphic transformations. The process of calculation is complicated and obscure. It is very difficult to realize 3D visualization by using the traditional programming language. MATLAB is introduced into 3D graphic transformations. By using its ability of powerful matrix operation and rich graphic processing, we can calculate matrix and output graphic rapidly, and show the method and process of graphic transformation clearly and intuitively.
Key words:3D graphics transformation; matrix; MATLAB; projection; computer graphics
几何图形是CAD系统中的基本元素,无论以何种方式建立的模型,最终都需要转换为几何图形进行显示和输出。几何图形由顶点坐标、顶点间的拓扑关系和组成图形的线面模型共同决定[1]。图形变换是计算机图形处理的基础,是计算机图形学的重要组成部分,图形的处理、显示和形体构造等都需要使用到图形变换。图形变换的实质是对图形顶点的坐标进行变换,这种变换不改变图形各元素的属性和它们之间的拓扑关系,仅改变各点的坐标。
三维图形变换包括比例变换、对称变换、错切变换、平移变换、旋转变换、投影变换和透视变换等基本变换,更复杂的变换可以通过基本变换组合而成。每一个变换都可以表示为矩阵计算的形式,通过矩阵的相乘构造更复杂的变换[2]。在图形变换中需要进行大量的矩阵运算,计算繁琐且变换过程晦涩抽象,使用C语言等传统的计算机语言实现可视化程序设计十分困难。因此在图形
变换中使用MATLAB软件,利用其强大的矩阵运算能力和丰富的图形处理能力,快速准确地进行矩阵计算和图形输出,直观地展现图形变换的方法和过程。
1三维图形变换矩阵
三维空间的点具有三个坐标,可以用矩阵的行向量[x y z]或列向量[x y z]T来表示,称为点的位置向量,点的位置向量的集合构成位置矩阵。矩阵记录了三维空间的形体的顶点坐标信息,可以由此构建三维形体的数学模型。
为了对三维形体进行图形变换,需要引入齐次坐标的概念。将n维空间的点用n+1维坐标表示,即为该点的齐次坐标。例如将点的三维坐标(x, y, z)表示为四维坐标(H×x, H×y, H×z, H),当H=1时为齐次坐标的规格化表示形式[3]。齐次坐标为图形变换提供统一的矩阵运算基础,同时也可以方便地表示无穷远点等通常难以处理的信息。
空间点的三维坐标(x, y, z)使用齐次坐标的规格化表示为(x, y, z, 1)。坐标变换可以对点的齐次坐标集合构成的矩阵进行乘法运算来实现,形如[x, y, z, 1] = [x, y, z, 1]×T,T为变换矩阵,得到变换后的坐标矩阵。三维图形变换就是对图形顶点的坐标进行矩阵变换,变换矩阵T是一个4×4的矩阵,形如abcp
2投影变换的MATLAB实现
在CAD系统的图形显示和输出中,三维形体需要投影到二维平面上,才能将图形在屏幕上显示和打印输出。“投影”是三维形体的二维表示方法,投影变换能够将三维形体投射到平面上,生成二维平面图形。通常使用的投影图主要有三视图、类似“三维”性质的轴测图和立体感强的透视图[4]。通过MATLAB软件进行矩阵运算和图形显示,可以形象直观地展现出变换的过程和最终结果。
2.1正投影变换
在工程制图中需要采用国家标准规定的三视图来表达形体。利用垂直于坐标平面的投射线将三维形体分别投射到三个坐标平面,即为正投影变换,得到形体的主视图、俯视图和左视图。
已知三维棱台的各顶点坐标,使用MATLAB建立顶点的齐次坐标矩阵M,创建棱台的线框模型,根据坐标矩阵M绘制棱台的线框模型,如图1所示。
对棱台的三维模型进行正投影变换得到三视图,主视图坐标变换矩阵为M×TV,俯视图坐标变换矩阵为M×TH,左视图坐标变换矩阵为M×TW。根据图形的大小和位置选择其中l、m、n的数值,在MATLAB中使用变换后的矩阵绘制正投影图,如图2所示。
2.2轴测投影变换
将三维形体连同直角坐标系沿不平行于坐标平面的方向,用平行投影法投射到投影面上所得的图形,就是轴测投影图。轴测图在一个投影面上同时反映出物体三个坐标面的信息,更接近于人的视觉观察习惯,所得图形形象、逼真,富有立体感,在工程设计和生产中常用作辅助图样,用来弥补正投影视图的不足。
正轴测投影变换:以正平面作为投影平面,先将形体绕Z轴逆时针旋转γ角,再绕X轴顺时针旋转α角,然后向V面投影,得到正轴测投影图。其变换矩阵为旋转、投影变换组成的复合矩阵TZ=T旋转×T旋转×T投影:
对棱台的三维模型进行轴测投影变换,得到轴测投影图,正等轴测图坐标变换矩阵为M×TZ,斜二轴测图坐标变换矩阵为M×TX。选择合适的α和γ角度,以及d和f的数值,在MATLAB中使用变换后的矩阵绘制轴测投影图,如图3和图4所示。
2.3透视变换
透视变换产生三维形体在不同视点位置和视线方向下的投影图。透视图从一个视点透过一个平面观察物体,其视线不平行,给人产生一种渐远渐小的深度感。透视图采用中心投影法绘制,将投射的视线与投影平面相截交即得到透视图[5]。通过投影中心将三维形体投影到平面上的变换称为透视变换。为了使透视图立体感强、图像逼真,要先对形体进行平移、旋转等操作,然后进行中心投影,得到逼真的透视投影图。
将形体绕Z轴旋转γ角,再相对X、Y、Z三个坐标轴平移l、m、n距离,然后使用两点透视矩阵进行坐标变换,最后将向V面作正投影,得到棱台的透视图。其变换矩阵为旋转、平移、透视、投影变换组成的复合矩阵TT=T旋转×T平移×T透视×T投影,该矩阵还需正常化后得到透视投影的变换矩阵。
对棱台的三维模型进行透视变换,得到透视投影图,坐标变换矩阵为M×TT。选择合适的γ值以及p、q、r的数值,在MATLAB中使用变换后的矩阵绘制透视投影图,如图5所示。
3总结
三维图形变换包括了几何变换和投影变换等,是计算机图形处理领域中的重要内容,矩阵运算是进行多种图形变换的统一方法。图形变换时需要对三维形体顶点的齐次坐标矩阵进行复合运算,计算过程繁琐且变换过程晦涩抽象,使用传统的程序设计语言实现变换过程的三维可视化非常困难。在计算机图形变换中引入MATLAB工具,利用其强大的矩阵运算能力和丰富的图形处理能力,快速准确地进行矩阵计算和图形输出,清晰直观地展现出图形变换的方法和过程,降低了学习的难度,增强了对图形变换方法的深层次理解,并将研究的重心转移到概念的理解和原理的运用上,有效地提高了系统开发的效率。
参考文献:
[1]王隆太,朱灯林,戴国洪.机械CAD/CAM技术[M].第3版.北京:机械工业出版社,2013:8-200.
[2]刘极峰.计算机辅助设计与制造[M].北京:高等教育出版社,2011:5-150.
[3]姚英学,蔡颖.计算机辅助设计与制造[M].北京:高等教育出版社,2011:10-50.
[4]何援军.投影与任意轴测图的生成——论图形变换和投影的若干问题之二[J].计算机辅助设计与图形学学报,2005,17(4):729-733.
[5]何援军.透视和透视投影变换——论图形变换和投影的若干问题之三[J].计算机辅助设计与图形学学报,2005,17(4):734-739.
[6]田秀萍,高慧.三维图形变换的统一矩阵[J].太原理工大学学报,1999,20(2):130-132.
[7]连瑞梅.三维图形的几何变换及其变换矩阵[J].潍坊学院学报,2005,5(4):76-78.
[8]马丽丽,张光辉,李杏粉.矩阵在计算机三维图形变换中的应用[J].石家庄铁路职业技术学院学报,2008,7(3):42-47.
(责任编辑:李丽范君)