欢迎来到天天文库
浏览记录
ID:1236999
大小:891.50 KB
页数:28页
时间:2017-11-09
《图形编程指南chapter2》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、28第二章3D变换目录2.1欧几里得空间,自由度和基本变换2.2平移2.3缩放2.4在平面内旋转2.53D旋转2.5.1坐标系2.5.2变换次序2.6以矩阵形式表达变换2.7投影变换2.7.1平行投影2.7.2透视投影2.8通过定点算法实现变换2.8.1整型数表示2.8.2定点数运算2.8.3定点算法的实现引言真实的现实由物质组成。物质可以反射光线,使它们本身可以被人看到。在计算机图形意义上,术语中的虚拟现实并不作为物质而存在。它只是在可视化算法和计算机硬件帮助下的某种抽象实体的解析描述,当人们看上去的时候类似物质和现实。
2、因此,在计算机图形学上的第一个挑战就是找到一种解析地描述对象的途径,然后是找到一种数学设备来支持可视化算法。几何学和线性代数的方法都在计算机图形学中使用,典型地,我们使用几何学和线性代数来解决问题。在这一章我们将要主要集中地讨论有关不同坐标变换的数学方法。变换是把一个坐标系中的点映射到另一个坐标系的方法。对象在虚拟世界中的运动和投影到屏幕上要使用不同的坐标变换来计算。为了有效地计算,我们也考虑一些实现变换以及计算方法的技术问题。2.1欧几里得空间,自由度和基本变换在几何学中,物质的形状在根本上基于空间中一些点的坐标。我们在
3、一个局部范围感知到的周围的世界,在数学上对应于欧几里得空间。平面上一个单独的点,在欧几里得空间中,可以明确地用笛卡尔坐标指定:(x,y)。(参见图2.1)28图2.1:笛卡尔坐标系的2D平面同样地,我们周围的世界(包含了三个维),也能够被欧几里得三维空间模拟。在这个空间中一个单独的点被三个坐标指定:(x,y,z)。在随后的几章中,我们还要考虑表示虚拟世界的许多方法。这些方法本质上提供了如何确定所描述的对象上点的(x,y,z)坐标的方法。一些表达方法也许明确地指出对象的关键点,比如说多面体上的顶点。为了表达虚拟世界的一些参数
4、,我们可以使用简单的标量值。一个实数或一个整数就是一个标量。举例来说,标量可以被用于表达虚拟场景中所有方向上的恒定的照明度。其它的情况除了处理数量级外,也处理方向。传统的物理学例子是强制应用的材质点。这些实体清楚地包含了方向和数量。同样,在虚拟场景中有方向的光也要处理方向和数量。为了表达这些,我们使用向量。一个向量可以被看作有方向的线段,向量的数量等于线段的长度。很显然,有无穷的等方向、等长度的平行线段可以用同一个向量来表示。但是,在这些线段中,只有一个的起点在坐标系的原点。因此,我们可以用一个这样的线段唯一地描述一个向量
5、。在平面上的向量表示为,坐标被用于指定向量线段的终点,这个向量被假定起始于坐标系的原点。(参见图2.2)图2.2:决定向量坐标28图2.2也指出,当我们给定一些有向线段QP,我们可以通过移动线段的原点到坐标系的起点来推出这个线段表示的向量坐标。换句话说,向量坐标可以通过从线段终点P的坐标中减去线段起点Q的坐标计算出来:。同定义标量坐标的运算一样,比如说实数或整数进行加或减,也可以定义向量运算集。最重要的两个就是通过标量来定义的向量加法和向量乘法。两个向量的和定义为:坐标是两个给定向量坐标之和的向量:向量可以被标量乘,得到另
6、一个向量,其坐标值通过用给定的标量去乘给定的向量的坐标得到:向量加法可以表达几个向量实体的组合效果。乘以标量能改变向量实体的数量和方向,而方位不变。举例来说,用标量-2去乘一个向量,改变了向量的方向,长度也增加了一倍。图2.3展示了这些操作的几何意义。图2.3:向量运算(乘、和、差)其它关于向量的运算也可以同样地定义。举例来说,向量减法可以被定义为:与乘以标量-1的向量的和:(参看图2.3)在后面的几章,我们将要遇到向量的两个其它操作:标量积和向量积(即点乘和叉乘)。28需要指出的是,标量和向量使我们能够创建一个虚拟世界的
7、描述,对象在这个世界中移动和改变方向。如果约束对象体,使所有的点之间的距离不变,则这种刚体在平面上占有3个自由度,在3D空间占有6个自由度。每个自由度都是一个标量参数,它的改变引起了前面所说的系统状态的改变。举例来说,线段上的一个点在任何状态下只有一个自由度(点的位置),它可以通过一个单独的参数来指定,即线性坐标。对2D空间中的刚体来说,自由度沿着两个坐标轴位移(平移)以及沿着原点旋转。刚体从某个原始位置到任何其它位置的变换可以通过这3个参数变量表示出来。在3D空间中,有三种不同的独立的位移可能。每个都沿着三个坐标轴中的某
8、一个移动以及围绕三个不同的坐标轴旋转,这三个坐标轴都与形成坐标系的坐标轴相平行。总的来说,刚体的任何变换都可以表示为两种不同的变换类型:平移和旋转。对大多数计算机图形应用来说,合成的对象要保持形状和顶点坐标不变。在这一类应用中,我们最需要的就是刚体变换。然而,如果对象的形状(点之间的距离)变化了,我们同
此文档下载收益归作者所有