计算机图形学-第七章-几何变换优秀PPT.ppt
Lecture 7几何变换几何变换 概述概述在计算机图形学中,通常须要将画出的图形平移到某一在计算机图形学中,通常须要将画出的图形平移到某一位置,或变更图形的大小和形态,或利用已有图形生成位置,或变更图形的大小和形态,或利用已有图形生成困难图形,这种图形处理的过程就是图形的几何变换,困难图形,这种图形处理的过程就是图形的几何变换,简称图形变换。简称图形变换。二维图形和三维图形都可以进行图形变换。图形变换通二维图形和三维图形都可以进行图形变换。图形变换通常接受矩阵的方法,图形所做的变换不同其变换矩阵也常接受矩阵的方法,图形所做的变换不同其变换矩阵也不同。变换的实质是对由图形上各点的坐标组成的矩阵不同。变换的实质是对由图形上各点的坐标组成的矩阵进行运算,因此在探讨各种具体图形几何变换时,可以进行运算,因此在探讨各种具体图形几何变换时,可以归结为一个点的变换。归结为一个点的变换。7.1 二维基本变换二维基本变换 二维基本变换包括:二维基本变换包括:平移平移比例比例旋转旋转 7.1.1 平移变换平移变换 平移是一物体从一个位置到另一位置所作的直线移动。平移是一物体从一个位置到另一位置所作的直线移动。假如要把一个位于的点移到新位置时,只要在原坐标上假如要把一个位于的点移到新位置时,只要在原坐标上加上平移距离加上平移距离Tx及及Ty即可即可 平移变换平移变换表示成数学形式:表示成数学形式:表示成向量形式:表示成向量形式:可以用矩阵相加来表示可以用矩阵相加来表示P点的位移点的位移计为:计为:7.1.2 比例变换比例变换 用来变更一物体大小的变换称为比例变换(缩放变换)。用来变更一物体大小的变换称为比例变换(缩放变换)。假如要对一个多边形进行比例变换,那么可把各顶点的假如要对一个多边形进行比例变换,那么可把各顶点的坐标(坐标(x,y)均乘以比例因子)均乘以比例因子Sx、Sy,以产生变换后的,以产生变换后的坐标(坐标(x,y)比例变换比例变换表示成数学形式:表示成数学形式:假如令假如令 则比例变换可以表示成以下的矩阵形式:则比例变换可以表示成以下的矩阵形式:记为:记为:7.1.3 旋转变换旋转变换 物体上的各点绕一固定点沿圆周路径作转动称为旋转变物体上的各点绕一固定点沿圆周路径作转动称为旋转变换。我们可用旋转角表示旋转量的大小。换。我们可用旋转角表示旋转量的大小。一个点由位置(一个点由位置(x、y)旋转到()旋转到(xy)如下图所示,)如下图所示,为旋为旋转角转角。旋转变换旋转变换由图可得到如下三角关系式:由图可得到如下三角关系式:则相对于坐标原点的旋转变换公式如下:则相对于坐标原点的旋转变换公式如下:旋转变换旋转变换假如令假如令 则有则有 记为记为 7.2 二维几何变换的齐次坐标表示二维几何变换的齐次坐标表示 可以看出,平移变换的处理方法与其他两种变换的形可以看出,平移变换的处理方法与其他两种变换的形式不一样,但我们希望能够用一种一样的或同类的方法式不一样,但我们希望能够用一种一样的或同类的方法来处理这三种变换,使得这三种基本变换能很简洁地结来处理这三种变换,使得这三种基本变换能很简洁地结合在一起,形成各种困难的组合变换。为了解决这个问合在一起,形成各种困难的组合变换。为了解决这个问题,引入齐次坐标这一概念。题,引入齐次坐标这一概念。基本思想基本思想:把一个把一个n维空间的几何问题维空间的几何问题,转换到转换到n+1维空间维空间中去解决。即用一个有中去解决。即用一个有n+1个重量的向量去表示一个有个重量的向量去表示一个有n个重量的向量。个重量的向量。进一步分析知,平移变换是对常数项的变换,而比例进一步分析知,平移变换是对常数项的变换,而比例和旋转则是对和旋转则是对x和和y项的变换。项的变换。二维几何变换的齐次坐标表示二维几何变换的齐次坐标表示假如我们既要对常数项进行变换,也要对假如我们既要对常数项进行变换,也要对x和和y项进行变项进行变换,我们进行如何的处理呢?换,我们进行如何的处理呢?视察如下的表达式:视察如下的表达式:则有:则有:x=a1x+a2y+a3c y=b1x+b2y+b3c c=c1x+c2y+c3c二维几何变换的齐次坐标表示二维几何变换的齐次坐标表示假如我们令:假如我们令:a1=1,a2=0,a3=Tx b1=0,b2=1,b3=Ty c1=0,c2=0,c3=1,c=1则有:则有:x=x+Tx y=y+Ty 1=1上两式正好是坐标的平移变换。上两式正好是坐标的平移变换。二维几何变换的齐次坐标表示二维几何变换的齐次坐标表示运用这种表示方法,坐标的平移变换可以表示为:运用这种表示方法,坐标的平移变换可以表示为:平移变换的矩阵形式缩写:平移变换的矩阵形式缩写:这样,我们就把矩阵的加法运算转化为矩阵的乘法运算,这样,我们就把矩阵的加法运算转化为矩阵的乘法运算,我们运用的这种表达坐标的方法就叫齐次坐标表示。我们运用的这种表达坐标的方法就叫齐次坐标表示。(x,y)表达为表达为(hx,hy,h),当当h=1时称为规格化齐次坐标。时称为规格化齐次坐标。二维几何变换的齐次坐标表示二维几何变换的齐次坐标表示运用规格化齐次坐标,我们可以表示另外两种变换:运用规格化齐次坐标,我们可以表示另外两种变换:比例变换的矩阵形式比例变换的矩阵形式:缩写为缩写为:旋转变换的矩阵形式旋转变换的矩阵形式:缩写为缩写为:7.2.3 其他变换其他变换 反射变换反射变换:反射是用来产生物体的镜象的一种变换。物反射是用来产生物体的镜象的一种变换。物体的镜象一般是相对于一对称轴生成的体的镜象一般是相对于一对称轴生成的。关于关于x轴对称变换轴对称变换 关于关于y轴对称变换轴对称变换 关于坐标原点的对称变换关于坐标原点的对称变换 关于关于x轴对称变换轴对称变换 关于关于x轴的对称变换,是一种特殊形式的缩放变换,其中,轴的对称变换,是一种特殊形式的缩放变换,其中,Sx=1,Sy=-1,如图所示,其变换矩阵为:,如图所示,其变换矩阵为:关于关于y轴对称变换轴对称变换 关于关于y轴的对称变换,是一种特殊形式的缩放变换,其中,轴的对称变换,是一种特殊形式的缩放变换,其中,Sx=-1,Sy=1,如图所示,其变换矩阵为:,如图所示,其变换矩阵为:关于坐标原点的对称变换关于坐标原点的对称变换 关于关于y轴对称变换,是一种特殊形式的缩放变换,其中,轴对称变换,是一种特殊形式的缩放变换,其中,Sx=-1,Sy=-1,如图所示,其变换矩阵为:,如图所示,其变换矩阵为:错切变换错切变换 这这种种变变换换可可使使物物体体产产生生变变形形,即即物物体体产产生生扭扭转转或或称称为为错错切。常用的两种错切变换是沿切。常用的两种错切变换是沿x向或沿向或沿y向错切变换。向错切变换。沿沿x方向关于方向关于y轴的错切轴的错切 沿沿y方向关于方向关于x轴的错切轴的错切 沿沿x方向关于方向关于y轴的错切轴的错切 在在下下图图中中,对对矩矩形形ABCD沿沿x轴轴方方向向进进行行错错切切变变换换,得得到到矩矩形形ABCD。错错切切的的角角度度为为,令令shx=tan假假定定点点(x,y)经错切变换后变为(经错切变换后变为(x,y),由下图可知:),由下图可知:从而沿从而沿x方向关于方向关于y轴的错切轴的错切的变换矩阵为:的变换矩阵为:沿沿y方向关于方向关于x轴的错切轴的错切 在在下下图图中中,对对矩矩形形ABCD沿沿y轴轴方方向向进进行行错错切切变变换换,得得到到矩矩形形ABCD。错错切切的的角角度度为为,令令shy=tan,假假定定点点(x,y)经错切变换后变为(经错切变换后变为(x,y),由下图可知),由下图可知:从而沿从而沿y方向关于方向关于x轴的错切轴的错切的变换矩阵为:的变换矩阵为:7.2.4 二维几何变换的一般形式二维几何变换的一般形式 设设图图形形上上一一点点的的坐坐标标为为P(x,y),经经过过二二维维几几何何变变换换后后的的坐坐标标为为P(x,y),变换矩阵一般可写为:,变换矩阵一般可写为:即:即:这样的变换在数学上称为这样的变换在数学上称为仿射变换仿射变换(Affine Transformation)。前面介绍的几种变换都是仿射变换的特例。前面介绍的几种变换都是仿射变换的特例。7.3 组合变换组合变换 随意一个变换序列均可表示为一个组合变换矩阵。组合随意一个变换序列均可表示为一个组合变换矩阵。组合变换矩阵可由基本变换矩阵的乘积求得。由若干基本变变换矩阵可由基本变换矩阵的乘积求得。由若干基本变换矩阵相乘求得组合变换矩阵的方法称为矩阵的级联。换矩阵相乘求得组合变换矩阵的方法称为矩阵的级联。单个基本变换的组合变换单个基本变换的组合变换 多个基本变换的组合变换多个基本变换的组合变换 7.3.1 单个基本变换的组合变换单个基本变换的组合变换 组合平移变换组合平移变换 对一物体连续平移两次,假定两次平移的距离为(对一物体连续平移两次,假定两次平移的距离为(Tx1,Ty1)及()及(Tx2,Ty2),则),则由此可计算出组合矩阵为:由此可计算出组合矩阵为:上式表明,进行连续两次平移,事实上是把平移距离相上式表明,进行连续两次平移,事实上是把平移距离相加,即加,即 组合比例变换组合比例变换 作用于点作用于点P的两次连续的比例变换的变换矩阵为:的两次连续的比例变换的变换矩阵为:即:即:连续进行两次比例变换,事实上是把相应的比例因子相连续进行两次比例变换,事实上是把相应的比例因子相乘。乘。组合旋转变换组合旋转变换 连续两次旋转的组合变换矩阵可用下式表示连续两次旋转的组合变换矩阵可用下式表示与组合平移的状况相像,连续旋转事实上是把旋转角相与组合平移的状况相像,连续旋转事实上是把旋转角相加。加。7.3.2 多个基本变换的组合变换多个基本变换的组合变换 相对于任一固定点的比例变换相对于任一固定点的比例变换 首先把图形及固定点一起平移,使固定点移到坐标原点首先把图形及固定点一起平移,使固定点移到坐标原点上;然后把图形相对于原点进行比例变换;最终把图形上;然后把图形相对于原点进行比例变换;最终把图形及固定点一起平移,使固定点又回到原来位置。及固定点一起平移,使固定点又回到原来位置。相对于任一固定点的比例变换相对于任一固定点的比例变换此变换序列可表示为:此变换序列可表示为:其中变换矩阵为:其中变换矩阵为:OPENGL程序中的变换依次程序中的变换依次glMatrixMode(GL_MODELVIEW);/指定当前操作矩阵类型指定当前操作矩阵类型glLoadIdentity();/设置当前操作矩阵为单位矩阵设置当前操作矩阵为单位矩阵glMultMatrix(TT(XA,YA);/用当前矩阵乘以函数所供应矩阵用当前矩阵乘以函数所供应矩阵glMultMatrix(TS(Sx,Sy);glMultMatrix(TT(-XA,-YA);glBegin(GL_POINTS);glVertex3f(x,y,x);glEnd();围绕任一基准点的旋转变换围绕任一基准点的旋转变换 下下图图所所示示的的为为围围绕绕任任一一基基准准点点A(xA,yA)旋旋转转时时,由由一一变变换换序序列列得得到到一一组组合合矩矩阵阵的的过过程程。首首先先,把把物物体体平平移移,使使基基准准点点与与坐坐标标原原点点重重合合,然然后,把物体绕原点旋转,最终,把物体平移,使基准点回到原来位置。后,把物体绕原点旋转,最终,把物体平移,使基准点回到原来位置。围绕任一基准点的旋转变换围绕任一基准点的旋转变换此变换序列可以用以下矩阵的乘积表示:此变换序列可以用以下矩阵的乘积表示:关于随意轴的对称变换关于随意轴的对称变换 以任始终线以任始终线l为对称轴的对称变换可以用变换合成的方法按如下步骤建立。为对称轴的对称变换可以用变换合成的方法按如下步骤建立。平移使平移使l过坐标原点,记变换为过坐标原点,记变换为T1,图形,图形A被变换到被变换到A1。旋转旋转角,使角,使l和和ox轴重合,记变换为轴重合,记变换为R1,图形,图形Al被变换到被变换到A2。求图形求图形A关于关于x轴的对称图形轴的对称图形A3,记变换为,记变换为RFx。旋转旋转-角,记变换为角,记变换为R2,图形,图形A3被变换到被变换到A4。平平移移使使l回回到到其其原原先先的的位位置置,记记变变换换为为T2,图图形形A4被被变变换换到到As。As即即为为A关于关于l的对称图形。的对称图形。总的变换为:总的变换为:变换矩阵的级联特性变换矩阵的级联特性 矩矩阵阵相相乘乘是是符符合合结结合合律律的的,即即在在求求A、B、C三三个个矩矩阵阵的的积时,可以先把积时,可以先把A及及B相乘,也可以先把相乘,也可以先把B及及C相乘,即相乘,即但但矩矩阵阵相相乘乘是是不不符符合合交交换换律律的的,即即一一般般矩矩阵阵积积AB与与BA不不相相等等。这这样样,假假如如我我们们要要对对一一物物体体进进行行平平移移及及旋旋转转变变换换,则则要要特特殊殊留留意意矩矩阵阵级级联联的的次次序序。接接受受不不同同的的变变换换次次序,其最终结果是不一样的。序,其最终结果是不一样的。7.4 三维几何变换三维几何变换 三维图形的平移,比例及旋转变换是对二维变换的扩展三维图形的平移,比例及旋转变换是对二维变换的扩展 三维旋转一般不能干脆由二维变换扩展得到,因为三维三维旋转一般不能干脆由二维变换扩展得到,因为三维旋转可围绕空间任何方位的轴进行。旋转可围绕空间任何方位的轴进行。三维几何变换方程也可以用变换矩阵表示。任何一个变三维几何变换方程也可以用变换矩阵表示。任何一个变换序列均可用一个矩阵表示,此矩阵是把序列中的各个换序列均可用一个矩阵表示,此矩阵是把序列中的各个矩阵级联到一起而得到的矩阵级联到一起而得到的.对于三维空间点须要用对于三维空间点须要用4个数来表示,而相应的变换矩个数来表示,而相应的变换矩阵是阵是44阶矩阵。阶矩阵。7.4.1 三维坐标系的建立三维坐标系的建立 右手坐标系右手坐标系:伸出右手,当用大姆指指向伸出右手,当用大姆指指向x轴的正方向,食指指向轴的正方向,食指指向y轴的正轴的正方向,则与手心垂直的中指方向就是方向,则与手心垂直的中指方向就是z轴正向。在计算机图形学中,两种轴正向。在计算机图形学中,两种坐标系都可以运用。坐标系都可以运用。右手坐标系为大多数人所熟悉,因此在探讨图形的数学问题时常运用右右手坐标系为大多数人所熟悉,因此在探讨图形的数学问题时常运用右手坐标系。本课程中没有指明时,均指右手坐标系。手坐标系。本课程中没有指明时,均指右手坐标系。7.4.2 三维图形几何变换三维图形几何变换 三维几何变换也可利用齐次坐标的概念,变换可以用一三维几何变换也可利用齐次坐标的概念,变换可以用一个个44的变换矩阵来表示。设三维空间中的点的变换矩阵来表示。设三维空间中的点P(x,y,z),其,其规格化齐次坐标为规格化齐次坐标为(x,y,z,1)。若变换矩阵为若变换矩阵为T,T为为44的矩阵,则变换后的点的矩阵,则变换后的点P=TP。平移变换平移变换 在在用用三三维维齐齐次次坐坐标标表表示示时时,把把一一个个点点由由位位置置(x,y,z)平移至位置(平移至位置(x,y,z)可用以下矩阵运算实现:)可用以下矩阵运算实现:所示的矩阵表达式与以下三式等效:所示的矩阵表达式与以下三式等效:比例变换比例变换 设空间一点设空间一点P(x,y,z)以原点为中心,在三根轴上分)以原点为中心,在三根轴上分别放大或缩小别放大或缩小Sx、Sy,Sz倍,变换矩阵为:倍,变换矩阵为:旋转变换旋转变换 三维空间的旋转:三维空间的旋转:绕绕x轴的旋转轴的旋转 绕绕y轴的旋转轴的旋转 绕绕z轴的旋转轴的旋转 绕空间一条随意轴的旋转绕空间一条随意轴的旋转 绕绕x轴的旋转轴的旋转 当点当点P(x,y,z)绕绕x轴旋转轴旋转角到角到P(x,y,z)时,点时,点的的x坐标值不变坐标值不变,则有:则有:变换矩阵为:变换矩阵为:绕绕y轴的旋转轴的旋转 当点当点P(x,y,z)绕绕y轴旋转轴旋转角到角到P(x,y,z)时,点时,点的的y坐标值不变坐标值不变,则有:,则有:变换矩阵为:变换矩阵为:绕绕z轴的旋转轴的旋转 当点当点P(x,y,z)绕绕y轴旋转轴旋转角到角到P(x,y,z)时,点时,点的的z坐标值不变坐标值不变,则有:,则有:变换矩阵为:变换矩阵为:反射变换反射变换 假如要对于假如要对于x y平面进行变换,此变换事实上是变更平面进行变换,此变换事实上是变更z坐标坐标的符号而保持的符号而保持x、y坐标不变,一点相对于坐标不变,一点相对于x y平面反射变平面反射变换矩阵为:换矩阵为:同样可定义相对于同样可定义相对于y z平面或平面或x z平面进行变换的矩阵平面进行变换的矩阵:错切变换错切变换 三维错切变换是指对定义一个点的三个坐标值中的两个三维错切变换是指对定义一个点的三个坐标值中的两个进行变换,使三维形体发生错切变形的变换进行变换,使三维形体发生错切变形的变换.下面是以下面是以z轴为依靠轴(轴为依靠轴(z值不变)产生三维错切的变换值不变)产生三维错切的变换矩阵矩阵:围绕随意轴的旋转变换围绕随意轴的旋转变换在给定旋转轴的特征及旋转角之后,可用以下在给定旋转轴的特征及旋转角之后,可用以下5步完成对步完成对随意轴的旋转:随意轴的旋转:平移物体使旋转轴通过坐标原点。平移物体使旋转轴通过坐标原点。旋转物体使旋转轴与某一坐标轴重合。旋转物体使旋转轴与某一坐标轴重合。进行规定的旋转。进行规定的旋转。进行反旋转使放置轴回到原来的方位。进行反旋转使放置轴回到原来的方位。进行反平移使旋转轴回到原来的位置。进行反平移使旋转轴回到原来的位置。围绕随意轴的旋转变换围绕随意轴的旋转变换首先,假定旋转轴用两点定义首先,假定旋转轴用两点定义P1(x1,y1,z1)和和P2(x2,y2,z2),由此两点定义一向量:,由此两点定义一向量:用此向量可求得沿旋转轴的单位向量:用此向量可求得沿旋转轴的单位向量:用以下平移矩阵可把物体平移使旋转轴通过坐标原点:用以下平移矩阵可把物体平移使旋转轴通过坐标原点:围绕随意轴的旋转变换围绕随意轴的旋转变换要使旋转轴与要使旋转轴与z轴重合,可通过以下两步实现,首先,围轴重合,可通过以下两步实现,首先,围绕绕x轴旋转使向量轴旋转使向量u转到转到xz平面中;然后围绕平面中;然后围绕y轴旋转使轴旋转使u与与z轴重合。轴重合。首先确定使首先确定使u转到转到xz平面所需的旋转角的正弦及余弦值。平面所需的旋转角的正弦及余弦值。围绕随意轴的旋转变换围绕随意轴的旋转变换上面已由的各个重量确定了及的值,由此可得到绕上面已由的各个重量确定了及的值,由此可得到绕x轴的轴的旋转矩阵为:旋转矩阵为:围绕随意轴的旋转变换围绕随意轴的旋转变换下面确定把下面确定把xz平面中的单位向量围绕轴旋转到正轴的变平面中的单位向量围绕轴旋转到正轴的变换矩阵。换矩阵。因此首先确定因此首先确定b b的的sin和和cos值:值:sin b b=a,cos b b=d由此可得到绕由此可得到绕y轴的旋转矩阵为:轴的旋转矩阵为:围绕随意轴的旋转变换围绕随意轴的旋转变换用上述变换矩阵,可使旋转轴与用上述变换矩阵,可使旋转轴与z轴重合。然后,按给定轴重合。然后,按给定的旋转角的旋转角绕绕 z 轴旋转,此旋转矩阵为:轴旋转,此旋转矩阵为:为完成绕随意轴的旋转,最终要把旋转轴变换回原来位为完成绕随意轴的旋转,最终要把旋转轴变换回原来位置。这样,围绕随意轴旋转的变换矩阵可表示为以下七置。这样,围绕随意轴旋转的变换矩阵可表示为以下七个独立变换的组合:个独立变换的组合:三维几何变换的一般形式三维几何变换的一般形式 设图形上一点的坐标为设图形上一点的坐标为P(x,y,z),经过二维几何变换,经过二维几何变换后的坐标为后的坐标为P(x,y,z),变换矩阵一般可写为:,变换矩阵一般可写为:即即 三维几何变换的一般形式三维几何变换的一般形式我们可以得到以下结论:我们可以得到以下结论:的作用是对点的坐标进行比例、旋转等变的作用是对点的坐标进行比例、旋转等变换。换。的作用是对点进行平移变换。的作用是对点进行平移变换。7.4.3 三维坐标系变换三维坐标系变换 实现图形变换可接受两种思想实现图形变换可接受两种思想:第一种就是在同一个坐标系中实现图形的平移、旋转等第一种就是在同一个坐标系中实现图形的平移、旋转等变换,变换后的图形与变换前的图形在同一个坐标系中变换,变换后的图形与变换前的图形在同一个坐标系中.另一种等效的方法是把变换看成是坐标系的变动,变换另一种等效的方法是把变换看成是坐标系的变动,变换前和变换后的图形在不同的坐标系中。前和变换后的图形在不同的坐标系中。三维坐标系变换三维坐标系变换假定有两个坐标系假定有两个坐标系Oxyz和,其中在坐标系和,其中在坐标系Oxyz中,中,的坐标为的坐标为 。分别为三个单位向量(分别为三个单位向量(ux,uy,uz),(),(vx,vy,vz)和()和(nx,ny,nz),现在用变换合成的方法将坐标系),现在用变换合成的方法将坐标系Oxyz中的图形变换到坐标系中去中的图形变换到坐标系中去(见下图):(见下图):三维坐标系变换三维坐标系变换变换步骤如下:变换步骤如下:平移使平移使 落于原点落于原点O,变换为,变换为 ;绕绕x轴轴旋旋转转角角度度x,使使n轴轴落落于于xOz平平面面,变变换换为为Rx(x);绕绕y轴轴旋旋转转角角度度y,使使n轴轴与与z轴轴同同向向且且重重合合,变变换换为为Ry(y);绕绕z轴旋转角度轴旋转角度z,使,使u轴和轴和x轴同向且重合,变换为轴同向且重合,变换为Rz(z)。三维坐标系变换三维坐标系变换则变换矩阵为:则变换矩阵为:其实,由线性代数学问可知,从坐标系其实,由线性代数学问可知,从坐标系Oxyz到的正交变到的正交变换为:换为:所以上述矩阵变换,所以上述矩阵变换,可以表示为:可以表示为:从三维空间到二维平面从三维空间到二维平面 在真实世界里,全部的物体都在真实世界里,全部的物体都是三维的。但是,这些三维物体是三维的。但是,这些三维物体在计算机世界中却必需以二维平在计算机世界中却必需以二维平面物体的形式表现出来。那么,面物体的形式表现出来。那么,这些物体是怎样从三维变换到二这些物体是怎样从三维变换到二维的呢?下面我们接受相机维的呢?下面我们接受相机(Camera)模拟的方式来讲解并描述模拟的方式来讲解并描述这个概念这个概念从三维空间到二维平面从三维空间到二维平面从三维空间到二维平面,就犹如用相机拍照一样,通常都要经验从三维空间到二维平面,就犹如用相机拍照一样,通常都要经验以下几个步骤:以下几个步骤:第一步,将相机置于三角架上,让它对准三维景物第一步,将相机置于三角架上,让它对准三维景物 其次步,将三维物体放在适当的位置(模型变换,其次步,将三维物体放在适当的位置(模型变换,Modeling Transformation););第三步,选择相机镜头并调焦,使三维物体投影在二维胶片上第三步,选择相机镜头并调焦,使三维物体投影在二维胶片上(投影变换,(投影变换,Projection Transformation););第四步,确定二维像片的大小(视口变换,第四步,确定二维像片的大小(视口变换,Viewport Transformation)。)。视点方向:相机初始方向都指向视点方向:相机初始方向都指向Z负轴负轴 glFrustum 投影函数投影函数这个函数原型为:这个函数原型为:void glFrustum(GLdouble left,GLdouble Right,GLdouble bottom,GLdouble top,GLdouble near,GLdouble far);它创建一个透视视景体。其操作是创建一个透视投影矩阵,并且用这个它创建一个透视视景体。其操作是创建一个透视投影矩阵,并且用这个矩阵乘以当前矩阵。这个函数的参数只定义近裁剪平面的左下角点和右矩阵乘以当前矩阵。这个函数的参数只定义近裁剪平面的左下角点和右上角点的三维空间坐标,即上角点的三维空间坐标,即(left,bottom,-near)和和(right,top,-near);near和和far表示离视点的远近,它们总为正值。表示离视点的远近,它们总为正值。矩阵函数说明矩阵函数说明 void glLoadMatrixfd(const TYPE*m)设置当前矩阵中的元素值。函数参数设置当前矩阵中的元素值。函数参数*m是一个指向是一个指向16个个元素元素(m0,m1,.,m15)的指针,的指针,这这16个元素就是当前矩阵个元素就是当前矩阵 M 中的元素,其排中的元素,其排 列方式如列方式如下:下:矩阵函数说明矩阵函数说明void glMultMatrixfd(const TYPE*m)用当前矩阵去乘用当前矩阵去乘*m所指定的矩阵,并将结果存放于所指定的矩阵,并将结果存放于*m中。当前矩阵可以是用中。当前矩阵可以是用glLoadMatrix()指定的矩阵,也指定的矩阵,也可以是其它矩阵变换函数的综合结果。可以是其它矩阵变换函数的综合结果。void glLoadIdentity(void)功能:设置当前操作矩阵为单位矩阵功能:设置当前操作矩阵为单位矩阵(当前矩阵即为以后当前矩阵即为以后图形变换所要运用的矩阵图形变换所要运用的矩阵)。几何变换函数几何变换函数当几何变换时,调用当几何变换时,调用OpenGL的三个变换函数的三个变换函数glTranslate*()glRotate*()glScale*()实质上相当于产生了一个平移、旋转和比例矩阵,然后实质上相当于产生了一个平移、旋转和比例矩阵,然后调用调用glMultMatrix()与当前矩阵相乘。与当前矩阵相乘。平移函数平移函数平移变换函数如下:平移变换函数如下:void glTranslatefd(TYPE x,TYPE y,TYPE z)三个函数参数就是目标分别沿三个轴向平移的偏移量。三个函数参数就是目标分别沿三个轴向平移的偏移量。这个函数表示用这三个偏移量生成的矩阵乘以当前矩阵。这个函数表示用这三个偏移量生成的矩阵乘以当前矩阵。当参数是当参数是(0.0,0.0,0.0)时,表示对函数时,表示对函数glTranslate*()的操作是单位矩阵,也就是对物体没有影响。的操作是单位矩阵,也就是对物体没有影响。旋转函数旋转函数旋转变换函数如下:旋转变换函数如下:void glRotatefd(TYPE angle,TYPE x,TYPE y,TYPE z)函数中第一个参数是表示目标沿从点函数中第一个参数是表示目标沿从点(x,y,z)到原点的到原点的方向逆时针旋转的角度(以度为单位),后三个参数是方向逆时针旋转的角度(以度为单位),后三个参数是旋转的方向点坐标。这个函数表示用这四个参数生成的旋转的方向点坐标。这个函数表示用这四个参数生成的矩阵乘以当前矩阵。当角度参数是矩阵乘以当前矩阵。当角度参数是0.0时,表示对物体没时,表示对物体没有影响。有影响。缩放和反射函数缩放和反射函数 缩放和反射变换函数如下:缩放和反射变换函数如下:void glScalefd(TYPE x,TYPE y,TYPE z)三个函数参数值就是目标分别沿三个轴向缩放的比例因三个函数参数值就是目标分别沿三个轴向缩放的比例因子。这个函数表示用这三个比例因子生成的矩阵乘以当子。这个函数表示用这三个比例因子生成的矩阵乘以当前矩阵。这个函数能完成沿相应的轴对目标进行拉伸、前矩阵。这个函数能完成沿相应的轴对目标进行拉伸、压缩和反射三项功能。当参数是压缩和反射三项功能。当参数是(1.0,1.0,1.0)时,表示时,表示对函数对函数glScale*()操作是单位矩阵,也就是对物体没有影操作是单位矩阵,也就是对物体没有影响。当其中某个参数为负值时,表示将对目标进行相应响。当其中某个参数为负值时,表示将对目标进行相应轴的反射变换,且这个参数不为轴的反射变换,且这个参数不为1.0,则还要进行相应轴,则还要进行相应轴的缩放变换。的缩放变换。堆栈操作堆栈操作在计算机中,它常指在内存中开拓的一块存放某些变量在计算机中,它常指在内存中开拓的一块存放某些变量的连续区域。因此,的连续区域。因此,OpenGL的矩阵堆栈指的就是内存的矩阵堆栈指的就是内存中特地用来存放矩阵数据的某块特殊区域。中特地用来存放矩阵数据的某块特殊区域。矩阵堆栈对困难模型运动过程中的多个变换操作之间的矩阵堆栈对困难模型运动过程中的多个变换操作之间的联系与独立特别有利。因为全部矩阵操作函数如联系与独立特别有利。因为全部矩阵操作函数如glLoadMatrix()、glMultMatrix()、glLoadIdentity()等只处理当前矩等只处理当前矩阵或堆栈顶部矩阵,这样堆栈中下面的其它矩阵就不受阵或堆栈顶部矩阵,这样堆栈中下面的其它矩阵就不受影响。堆栈操作函数有以下两个:影响。堆栈操作函数有以下两个:void glPushMatrix(void);void glPopMatrix(void);程序程序立方体变换投影程序(立方体变换投影程序(7_1)原子模型程序原子模型程序(7_2)机器人手臂程序(机器人手臂程序(7_3)基本变换程序(基本变换程序(7_4)