2.3.3 基本二维变换
基本二维变换有比例变换(Scaling)、旋转变换(Rotating)、错切变换(Shearing)和平移变换(Translating)。
1)比例变换
比例变换就是将平面上任意一点的横坐标放大或缩小S11倍,纵坐标放大或缩小S22倍,即
其中S称为比例变换矩阵。图2.24是比例变换的几个例子。图中(b)是S11=S22的情况,(C)是S11≠S21的情况
2)旋转变换
旋转变换就是将平面上任意一点绕原点旋转θ角,一般规定逆时针方向为正,顺时针方向为负。从图2.25可推出变换公式:
3)错切变换
在旋转变换矩阵中,非对角线元素有何几何意义?观察图2.26中的例子。变换矩阵中元素S21起作把图形沿X方向“错切”的作用,Y值越小,错切量越小。S12则有将图形向Y方向“错切”的作用,同样其作用的大小与X值成正比。
4)平移变换
平移交换指的是将平面上任意一点沿X方向移动C。,沿Y方向移动ty(图2.27),其变换公式为
由上式可见,平移交换不能直接用2X2矩阵来表示。下述齐次坐标变换矩阵则可解决这个问题。
注意:这句话关键(疑问点在于为什么二位转换需要3x3的矩阵)
2.3.4 齐次坐标
如把平面上的点P=[Xy]放到空间去表示为[X Y H],使得x= X/H, y=Y/H 则称[X Y H」是点 P的齐次坐标。如规定齐次坐标的第三个分量H必须是 1,则称为规范齐次坐标。P=[xy」的规范齐次坐标是[x y 1]。显然,二维空间中描述的点与齐次坐标空间描述的点是一对多的关系。使用齐次坐标之后,平移交换可用矩阵乘法表示如下:
注意:现在可以看到平移的时候x1=x*1+x*0+x*tx,y1=y*0+y*1+y*ty即等于相加的做法,现在所有的转换都可以使用矩阵乘法了
2.3.5 复合变换
实际问题中常遇到的是较为复杂的变换,但这些均可通过一系列的基本变换复合而成。下面举例说明。 例1 绕任意点C=[Cx Cy]的旋转变换。图2.28总的变换可通过三个基本变换复合而成。先进行平移交换,平移量为-Cx和-Cy,然后绕原点旋转θ角,最后再进行平移量为Cx和Cy的平移变换。因此,任一点P经过逐次变换后的齐次坐标为
变换矩阵称为复合变换矩阵。
例 2相对于任意点 C=[Cx Cy]的比例变换
与例1其复合变换阵三个变换复合而成。即为
由上述计算过程知,一个简单比例变换需要有三个计算步骤。对第一次平移,可看成是将变换物移动到坐标系的原点,第二次平移则可看成将变换物移回原位。
例3 相对于直线 ax+by+c=0 进行对称变换
此例可由五个基本变换复合而成,复合变换矩阵可按下式进行计算
2.3.6 三维变换
对三维空间的点P=[X Y Z],采用规范齐次坐标则与二维情况类似,其平移交换和比例变换的变换矩阵分别为:
其中tx,ty,tz分别是沿x、y、z方向的平移量S11、S22和S33分别是在x、y、z方向上相对于原点的比例因子。三维旋转变换稍微复杂,采用右手坐标系,从规定的坐标轴正方向向原点看,绕该轴逆时针方向为正,顺时针方向为负。绕Z轴、X轴和Y轴旋转θ角的变换矩阵分别为:
数学上可证明,旋转变换中前三行和前三列组成的3X3子矩阵是一正交矩阵,即三个列(行)向量均为单位向量,互相正交,而且三个列向量经过该旋转变换后,分别与X轴、Y轴和Z轴重合。利用这个性质有时可很容易确定旋转变换矩阵。
三维几何变换与二维变换一样,也都是由一系列基本变换构成的复合变换。在进行变换过程中同样要注意变换矩阵的次序。虽然,有些变换矩阵与其次序无关,但从程序设计及计算的角度出发,建议读者一律采取按次序进行矩阵运算。三维变换矩阵中的大多数元素的作用读者已经了解,但其最后一列的元素在变换中起什么作用?这将在透视变换一节中得到解答。
2.3.7 三维透视变换
三维齐次几何变换矩阵中第四列元素组成的3x1子矩阵与透视交换有关,其中的元素称为透视参数。对空间任意点的透视变换为
上式中分母px+qy+rz+l是一个变量,故经透视变换后图形产生了变形。参数p、q、r如何对图形产生透视变换的呢?为简化问题,先设p=0、q=0,则这时的变换矩阵对空间点所进行的变换为
由上式,当 Z=0时,X=x,Y=y,说明z=0这个平面是此变换中的不变动平面,即变换后,x、y值均无变化;当 z→ ac时,则 Z→l/r,表示无限远点经透视变换后对应于有限点,也就是平行Z轴的直线变换后汇交于Z轴上的一点1/r;当Z→l/r时, Z→∞说明有限远点-l/r经透视变换后又对应无限远点,原来交于轴上的一点-l/r的直线变换后平行于Z轴。当r>0时,这种变换的几何意义如图2.31所示。同理可推论,当r≠0,P≠0时,则X轴上也有一个有限点x=l/P对应于x=∞的点。这时,经透视变图2.31透视交换的几何意义换后,平行于Z轴的直线汇交于Z轴上的一点1/r,而平行于X轴的直线则汇交于X轴上的点1/p处。当透视参数p、q、r都不等于零时,则透视变换将。x=∞, y=∞, z=∞处的点分别映射成 X= l/P, Y=l/q和 Z=1/r。这时,平行于三坐标轴的直线经变换后就分别汇交于X、Y、Z轴上的一固定点。
2.3.8 三维变换应用
1)多面视图
在工程制图中,绘制立体多面视图时是用正投影方法将立体投影到投影面上,然后将多个投影面连同已得到的投影图按一定规则展平在同一平面上,从而得到立体的多面视图。这个投影过程如果用矩阵来表示的话,就是将立体向投影面作正投影,再将投影面绕相应的坐标轴旋转,并使图形沿投影轴平移以保持视图间一定的距离,这三个步骤可分别用矩阵表示,而将这三个矩阵级联起来就得到了最后结果。为推导三视图的变换矩阵,现以X—Y平面作为正面投影面(即V面),主视图就是画在这个投影面上的。 (1)主视图:当立体向XY平面作正投影,在投影面展开时,XY平面保持不动,因而,x,y坐标不变,而z坐标为零,所以,主视图的变换矩阵是
(2)俯视图:俯视图是向XZ平面(即H面)投影,然后XZ平面连同所得的投影绕X轴正转出Y角,使与X Y平面重合,并沿Y轴反向平移一段距离所得的视图。这时,x,y坐标不变,Y=0。因此,俯视图的变换矩阵是
(3)侧视图:侧视图是先向Y z平面(即W面)投影,从而使y、z坐标不变,X=0,再绕Y轴正转90角,与XY平面重合,并沿X轴平移所得的视图,因此俯视图的变换矩阵是
立体的三视图也可以这样得到,即将立体向XY平面投影而得到主视图。为也得到俯视图,可把立体先绕X轴正转90度,然后向XY面投影,再沿X轴平移,就得到了侧视图。这种变换与上述变换结果是一样的。
原文地址:http://www.cnblogs.com/Clingingboy/archive/2010/10/17/1853559.html
【转】【矩阵】坐标的矩阵变换