几何变换
观察角度和物体位置的改变可以通过在世界坐标系中对物体进行各种变换来实现,如平移、放缩、旋转等。
二维窗口的裁剪
选择显示的内容--图形在窗口内的部分被显示出来,窗口外的部分被裁剪掉
裁剪算法:Sutherland-Cohen算法、Cyrus-Beck算法、梁友栋-Barsky算法、 Sutherland-Hodgman算法等。
几何变换
坐标系
世界坐标系(world coordinate):一个图形场景往往由多个对象组成,为了描述它们之间的空间关系,需要把它们置于一个统一的坐标系中,该坐标系称为世界坐标系。
模型坐标系(modeling coordinate)或局部坐标系(local coordinate):当构造单个对象的数字模型时,为了方便可以将其置于一个特定的坐标系下,即模型坐标系或局部坐标系。
设备坐标系(device coordinate):图形输出时,则应在输出设备上建立一个坐标系,这个坐标系称为设备坐标系。设备坐标系依据设备的种类有不同的形式,如二维的屏幕坐标系,描述机械手运动轨迹的三维坐标系。
标准化设备坐标系(normalized device coordinate):有些图形系统,对设备坐标系进行了规范化,将坐标范围限定在区间{x,y,z | 0≤x≤1, 0≤y≤1, 0≤z≤1}内,称为标准化设备坐标系。
1、平移
点(x’, y’, z’)由点(x, y, z)在x, y和z轴方向分别移动距离Δx, Δy和Δz得到。两点坐标间的关系为:
x′=x+Δx
y′=y+Δy
z′=z+Δz
2、放大和缩小
设点(x, y, z)经缩放变换后得点(x′,y′,z′)。两点坐标间的关系为
其中sx,sy和sz 为沿x, y和z轴方向放缩的比例
比例因子sx、sy和sz相等时,式是以原点为相似中心的相似变换,如图是对一三角形作相似比为2的相似变换的情形。
为了使缩放变换后的图形仍在原位置附近,可另外定义一个相似中心点(xp, yp, zp) 。
先把整个图形沿x, y和z方向平移–xp, –yp和–zp,相似中心就移到了坐标原点。
然后再对每一点按照式(4.3)作变换。
最后再沿x, y和z方向平移xp, yp和zp,把经过缩放的图形移回原处。
这样做的综合效果是图形以(xp, yp, zp)为中心作了缩放变换.
比例变换:
一个问题:把直线ax+by+c=0平移到原点的变换矩阵?
1.沿y轴,平移直线使之通过原点,平移量为c/b,变换矩阵:
2.沿x轴,平移直线使之通过原点,平移量为c/a,变换矩阵:
3、旋转变换
设给定点的坐标为
(x, y, z)= (rcos , rsin , z)
它绕z轴旋转α角后,可得点(x′, y′, z′)
绕空间任一通过坐标原点的轴,做旋转变换,需给出这根轴的方向(Ax,Ay,Az),下面要求(x,y,z)绕(Ax, Ay, Az)旋转α后得到(x’,y’,z’)。
1)首先建立一个新的坐标系Ouvw, Ow轴的指向和(Ax,Ay,Az)的指向一致.
--实际上就是将(Ax, Ay, Az)变成前面的z轴。
2)把要作旋转变换的对象从坐标系oxyz变到坐标系Ouvw, 在坐标系Ouvw把物体绕Ow轴旋转要求转动的角度;
3)再把旋转后的对象从坐标系Ouvw变换到原坐标系oxyz中,这样绕给定的、通过原点的轴的旋转便完成了。
具体计算:
注意到这里使用转置矩阵AT来替换逆矩阵A-1
式2获得的是xyz坐标转换成uvw坐标后,uvw坐标下选择α后得到的(u’,v’,w’)
式3和4的目的是将(u’,v’,w’)表示为xyz坐标下对应的('x’,'y’,z’)
4)如果旋转轴不通过坐标原点,而通过(xp, yp, zp)??
可先调用平移变换移动(xp, yp, zp)成原点,然后再沿着(Ax, Ay, Az) 旋转α 。
即象缩放变换一样,先作变换平移(-xp, -yp,-zp),再按前页的式5作旋转变换,最后将其平移(xp, yp, zp)。
例题
绕x轴旋转,将a=0,观察上图中的V1向量V1(0,b,c)可以得到α的旋转角表达式
4、错切变换
错切变换常用于图形弹性形变的处理上。错切变换矩阵对角线上的坐标全为1!
5、镜像
镜像变换也称为对称变换。变换后的图形是原图形关于某一轴线或原点的镜像 。
6、总结
观察上述的图形变换:
图形变化了, 但是原图形的连边规则没有改变,只是顶点位置改变了。
我们可以得出结论:变换图形就是要改变图形的几何关系,即改变顶点坐标,同时保持图形的拓扑关系不变。
齐次坐标与变换的矩阵表示
在实际绘图时,常要对对象连续做几次变换,例如作了平移后,作旋转,再作放大等。这样对每一点的坐标要依次用式(4.2),式(4.8)和式(4.4)作计算,这样计算量较大。
如果只有旋转和放缩,则可把旋转矩阵表达式和放缩矩阵表达式合并成一个矩阵。可写成如下形式:
齐次坐标表示法就是用n+1维向量表示n维向量。
n维向量的变换是在n+1维的空间进行的,变换后的n维结果是被反投回到感兴趣的特定的维空间内而得到的。
例如,我们使用齐次坐标(xh,yh,zh,h)来表示每个三维空间坐标位置(x,y,z)。
其中参数h可取为任意非零值。最简单的选择是取h=1,因此每个三维位置都可用齐次坐标(x,y,z,1)进行表示。
为使平移变换也能象变换上述矩阵变换式那样容易合并,可以采用齐次坐标。
其中h称为哑坐标 。
普通坐标与齐次坐标的关系为“一对多”
普通坐标×h → 齐次坐标
齐次坐标÷h → 普通坐标
例题
答案:D
其次坐标最后一个维度h不在三维空间上有对应,所以不需要考虑。普通坐标×h → 齐次坐标,这里h=2
所以三维空间坐标为(4,3)
判断:
所谓齐次坐标表示,就是用 n+1 维向量表示n维向量,那么普通坐标与齐次坐标的关系为“多对一”的关系。
错误,是“一对多”
普通坐标×h → 齐次坐标
使用齐次坐标可以将n维空间的一个点向量唯一的映射到n+1维空间中。
错误,“一对多”
普通坐标×h → 齐次坐标
变换的模式
具体应用中,有些图形软件包提供了两种图形的变换模式——图形模式和空间模式,使我们可以方便地控制变换的次序。
两种图形的变换模式
图形模式:
矩阵合并时,先调用的矩阵放在右边,后调用的矩阵放在左边,也称为固定坐标系模式。
特点:每一次变换均可看成相对于原始坐标系中执行的。
空间模式:
也称为活动坐标系模式,矩阵的合并方式和图形模式相反。
特点:在连续执行几次变换时,每一次变换均可看成是在上一次变换所形成的新坐标系中进行的。
图形模式
矩阵合并时,先调用的矩阵放在右边,后调用的矩阵放在左边。
空间模式
先把图形绕z轴旋转30°,然后再沿x轴平移距离7
可看成先对坐标系oxy作旋转,得到相应的坐标系ox′y′,然后再相对于新坐标系ox′y′作平移得到最后结果。
经变换后得到的三角形相对于原始坐标系的位置与图4.10(c)是一样的,只是考虑变换的方式不同。
不同的应用要用不同的变换模式
在绘图的情况下多用图形模式,因为用户比较容易估计变换后的结果。
整体变换的基础上再作一些较独立的局部变换时,常用空间模式。
如机械手经过变换后移动到适当位置,手腕和手指的运动是相对于手臂的,如果在手臂上建立了一个坐标,考虑手腕手指的运动就简单多了。当手臂作移动后,固定在手臂上的坐标便成为新坐标,手腕和手指的运动就可以在新坐标中考虑。这种多次变换的情况要用空间模式.