其他二维变换_1_反射
大多数图形软件包中包含了类似平移、旋转和缩放这些基本变换。有些软件包还提供一些对 某些应用有用的其他变换。反射错切是这样的两个变换。
        产生对象镜像的变换称为反射(reflection)。对于一个二维反射而言,其反射镜像通过将对象绕反射轴旋转180°而生成。我们可以在xy平面内或垂直于xy平面选择反射轴(axis of reflection)。当反射轴是xy平面内的一条直线时,绕这个轴的旋转路径在垂直于xy平面的平面中;而对于垂直于xy平面的反射轴,旋转路径在xy平面内。下面举出一些普通反射的例子。

       关于直线y = 0(x 轴)的反射,可以由下列变换矩阵1来完成:

xxljob 镜像_反射


        这个变换保持x值相同,但“翻动”y坐标位置的值。对象对于x轴反射后的方位如下图。为了想象这种反射的旋转变换,可以认为:平面上的对象移出xy平面,通过三维空间绕x轴旋转180°再回到x轴另一侧的xy平面。




xxljob 镜像_xxljob 镜像_02



对于x = 0(y轴)的反射,翻动x的坐标而保持y坐标不变,这种变换的

矩阵2是:




xxljob 镜像_xxljob 镜像_03

下图给出了关于直线x = 0反射的对象位置变化。这时的等量旋转是通过三维空间绕y轴旋转180°。




xxljob 镜像_二维复合变换_04

         可以通过相对于垂直习平面而又经过坐标原点的轴进行反射,并且同时翻动点的x和Y坐标,这种反射称为相对于坐标原点的反射,它与同时相对于两个坐标轴的反射等价。这种反射的变换

矩阵3表示为



xxljob 镜像_坐标轴_05



关于原点反射的例子如下图。反射矩阵3是θ = 180°的旋转矩阵R(θ),也就是将xy平面内的对象绕原点旋转


半圈。



xxljob 镜像_坐标轴_06



反射矩阵3可以一般化为xy平面内的任何反射点如下图,这种反射与将反射点作为基准点并在xy平面内旋转180°是相同的。




xxljob 镜像_其他二维变换_07

假如将对角线y = x选为反射轴,那么反射

矩阵4为:




xxljob 镜像_反射_08

        可以通过将一系列的旋转和坐标轴反射矩阵合并来推导出矩阵4。下图给出了一个可能的顺序。这里首先完成顺时针45°旋转,将直线y = x旋转到x轴上;接着完成对于x轴的反射;最后逆时针旋转45°,将直线y = x旋转回到其原始位置。另一个等价的变换是先将对象关于x轴反射,然后逆时针旋转90°。



xxljob 镜像_反射_09

xxljob 镜像_xxljob 镜像_10

为了得到关于对角线y = -x反射的变换矩阵,我们按下列变换顺序合并矩阵:(1)时针旋转45°,(2)对于y轴反射,(3)逆时针旋转45°,导致的变换矩阵5为




xxljob 镜像_坐标轴_11

如下图给出了使用这个反射矩阵变换对象的原始和最终位置。




xxljob 镜像_反射_12

        关于xy平面内任意直线y = mx + b的反射,可以使用平移-旋转-反射变换的组合而完成。通常,我们先平移直线使其经过原点。然后将直线旋转到坐标轴之一,并关于坐标轴反射。最后利用逆旋转和逆平移变换将直线还原到原来位置。


        我们可以将关于坐标轴或坐标原点的反射处理为缩放系数为负值的缩放变换。同样,反射矩阵的元素也可设置为

±1以外的其他值。大于1的值将镜像移至远离反射轴的位置,小于1的值将镜像移至接近反射轴的位置。因此,反射后的对象也可能放大、缩小或变形。