二维变换
平移变换
平移变换用齐次坐标表示。对点P(x,y)作平移变换
比例变换
点的坐标在x方向放大为原先的Sx倍,在y方向放大为原先的Sy倍,这种变换称为比例变换
旋转变换
(逆时针旋转)
反射变换
错切变换
齐次坐标
作用:将二维变换统一表示为一个矩阵,即用一种一致的乘法处理二维变换问题。
平移
比例
旋转
将两个sin的正负性互换 为顺时针
反射
错切
二维复合变换
复合变换是指图形做一次以上的几何变换。
M=MnMn-1…M2M1
M为复合变换矩阵,后面的为单次基本几何变换矩阵
变换方法:首先将参考点平移到坐标系原点,对坐标系原点进行比例变换或
旋转变换,然后再进行反平移,将参考点平移回原位置。
例4-1 一个由顶点P0(10,10),P1(30,10)和P2(20,25)
所定义的三角形,相对于点Q(10,25)逆时针旋转30°,求变
换后的三角形顶点坐标。
世界坐标系:三维直角世界坐标系可分为右手坐标系与左手坐标系两种,zw轴的指向按照右手螺旋法则或左手螺旋法则从xw轴转向yw轴确定。
用户坐标系(建模坐标系):建模坐标系,右手系,方便建模设置
观察坐标系:视点坐标系,左手系,从眼睛位置描述物体
屏幕坐标系:二维或三维坐标系,左手系
设备坐标系:设备坐标系,x轴向右,y轴向下可以规范化为规格化坐标系,x [0-1] ,y[0-1]。
窗口与视图
在观察坐标系中定义的确定图形显示内容的区域称为窗口。此时窗口内的图形是用户希望在屏幕上看到的,窗口是裁剪图形的标准参照物。
在设备坐标系中定义的输出图形的区域称为视区。视区和窗口常为矩形,大小可以不相同。一般情况下,用户把窗口内感兴趣的图形输出到屏幕上相应的视区内。
窗视变换
图形输出需要从窗口到视区的变换,只有位于窗口内的图形才能在视区中输出,并且输出的形状要根据视区的大小进行适当调整,这称为窗视变换
裁剪
ab:RC0=0000,RC1=0000
RC0|RC1=0000,“或”为零完全可见
cd:RC0=0100,RC1=0100
RC0&RC1=0100 ,“与”非零完全不可见
gh:RC0=1000,RC1=0010
RC0 & RC1=0000 “与”为零部分可见
ef: RC0=0001,RC1=0000
RC0 & RC1=0000 “与”为零部分可见
ij:RC0=0001,RC1=1000
RC0 & RC1=0000 “与”为零完全不可见
Cohen-Sutherland裁剪算法
如果一段直线的两个端点都位于窗口内,那么该段直线就完全位于窗口之内,应“简取” 。
如果一段直线的两个端点位于窗口的同一侧,那么该段直线就完全位于窗口之外,应“简弃”。
若不能将直线段“简取”或“简弃”,循环地用窗口的4条边界与直线段“求交”并检测是否“简取”或者“简弃”,直到剩余部分完全位于窗口之内或完全位于窗口之外。
算法:
(1)若直线段的两个端点的区域编码都为0,即RC0|RC1=0(二者按位相或的结果为零,即RC0=0且RC1=0),说明直线段的两个端点都在窗口内,应“简取”。
(2)若直线段的两个端点的区域编码都不为0,即RC0&RC1≠0(二者按位相与的结果不为零,即RC0≠0且RC1≠0),即直线段位于窗外的同一侧,说明直线段的两个端点都在窗口外,应“简弃”。
(3)若直线段既不满足“简取”也不满足“简弃”的条件,则需要与窗口进行“求交”判断。这时,直线段必然与窗口边界或窗口边界的延长线相交,分两种情况处理。
算法关键点
P0:RC0=0001, P:RC1=0000
RC0&RC1=0000“与”为零, P0P不能直接抛弃。
处理方法:保证一个端点在窗口外(如P0),这样此端点
到交点之间的线段无需判断,可以直接抛弃。用交点来代
替该端点(P0=P)。
中点分割算法
采用二分算法的思想来逐次计算直线段的中点Pm以逼近窗口边界。在给定的
误差范围内,使用P0和Pm中点来近似交点。
算法简单地把起点为P0、终点为P1的直线等分为两段直线,对每一段重复“简取”和“简弃”处理,对不能处理的直线继续等分下去,直到完成裁剪工·作。
P=(P0+P1)/2
Liang-Barsky算法
起点为P0(x0,y0),终点为P1(x1,y1)直线的参数方程为
对于坐标为(wxl,wyb)、(wxr,wyt)的裁剪窗口,直线段裁剪条件:
n=1表示左边界;n=2表示右边界;n=3表示下边界;n=4表示上边界。