第二部分 几何变换
什么是变换,就是坐标系之间的变化。举例来说:图2.1中,同一个点在两个坐标系中的坐标完全不同。这种变化就是坐标变换。
(1,1) (0,0) |
图2.1
一个典型的几何变换应用就是分型。图2.2是采用分型建模出来的叶子。
图2.2
几何变换本质就是坐标系变换。
在图形渲染过程中涉及很多的坐标系,也就需要大量的几何变换。一般来说,可以分为四类:
(一) 模型坐标系
几何模型自己的局部坐标系,标示模型元素(点、线等)的位置关系。
(二) 世界坐标系
所有模型共有的全局坐标系,标示各个模型之间的几何关系。
(三) 视点坐标系
以视点为坐标中心的世界坐标系,标示了视点中的各个模型在视点中的几何关系。
(四) 屏幕坐标系
根据硬件属性不同而表示实际屏幕中所有可显示几何体空间。OpenGL中默认为x,y,z在[0~1]之间的立方空间。
具体各个坐标系的实际使用情况可以参考图形渲染管线。
各种变换,可以概括为三种基本的变换的混合。
(一) 平移
(二) 旋转
(三) 缩放
图2.3a 原图 图2.3b 平移
图2.3c 旋转 图2.3d 缩放
数学上已经证明,所有的这些变换都可以通过向量和矩阵运算表示。为了方便所有的运算统一,多增加一维w。其所有操作和基本向量一样。下面是基本的三维坐标变换的公式:
公式2.1 平移变换
公式2.2 缩放变换
公式2.3 绕z轴旋转
公式2.4 绕x轴旋转
公式2.5 绕y轴旋转
对于由基本变换组合成的变换,就是基本变换矩阵的乘积(矢量积、注意运算顺序)。至于向量和矩阵相关的运算,这里就不细介绍了,可以参考相关数学书籍。