4-图形的几何变换及裁剪
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分别给代码中的各位赋值)。
2.对线段的端点进行检测 若线段全部在窗口内(c1= 0 且c2 = 0)——画线 若线段全部在窗口外(c1 and c2≠ 0)——退出 否则(c1≠0 or c2≠0 且 c1 and c2 = 0)要对线段进行分割,关
键是求与窗口四边的交点( 利用直线的两点式方程 )。交点求出
z
度单位和坐标轴的方向要适合对被处理对象
的描述,这个坐标系通常就称之为世界坐标 系或用户坐标系。世界坐标系一般采用右手 三维笛卡儿坐标系。 x
o
y
2. 观察坐标系(View Coordinates) 产生三维物体的视图,必须规定观 察点(视点)和观察方向。
y z o x
好比照相时选择拍摄的位置和方向。
平移变换 P′=P+Tm
Tm=[Mx My] Mx、My分别为X方 向和Y方向的平移量。 Sx 0 Ts= 0 Sy Sx、Sy分别表示比例因子。
cosθ sinθ Tr= -sinθ cosθ θ>0时为逆时针旋转 θ<0时为顺时针旋转
比例变换 P′=P×Ts
旋转变换 P'=P×Tr
四. 齐次坐标 从形式上来说,用一个有n+1个分量的向量去表示一个有n 个分量的向量的方法称为齐次坐标表示。
4.5 二维图形的裁剪
一. 二维线段裁剪方法
规则的二维裁剪窗口(矩形)。 线段相对于该窗口的情况: ①线段全部位于窗口的内部(A) ②线段全部位于窗口外部(B、C)
C A B D E
y=yT
y=yB x=xL x=xR
③线段的中间部分在窗口内,而二端点在窗口外部(D) ④线段的一端在窗口内,而另一端在窗口外(E)
后,要对其重新编码,并继续判断。
例图:
P2
C2=1010
C1=0001
C
P2
C2=0000
D A P1 P2
C2=0000
P1 B P1
C1=0100
P2
C2=0100
C1=0000
P1
C1=0101
2. 中点分割算法 算法的思路: 采用与前相似的线段端点编码和相应的检查方法,先判定
完全可见线段和显然不可见线段。
[ l m n] 产生沿x、y、z三轴方向上的平移变换。 p q r [s] 产生透视变换。 产生等比例缩放变换。
三维图形变换中要注意的几个问题: 1.在三维图形的比例变换中,经常会采用 s 来实现整体的比 例变换。当 |s | < 1 时,三维图形整体等比例放大;当 |s | > 1 时, 三维图形整体等比例缩小。
x=xL
1001 1000
1010
y=yT
0010
y=yB
第二位为“1”时,表示点在y=yB的下方;
第三位为“1”时,表示点在x=xR的右方;
0110
x=xR
第四位为“1”时,表示点在x=xL的左方。
算法步骤: 1.确定线段二端点P1和P2的代码值C1和C2(经一系列的判 断—— p1(x1,y1),p2(x2,y2)和xR、xL、yT、yB的比较,
沿 Y 轴方向关于 X 的错切----- x 坐标不变,而 y 坐标与原
坐标值( x , y )及变换矩阵中的 b 有关,即 y* = y + bx 并且,当 c (或 b ) > 0 时,图形沿 X (或 Y )正向错切; 当 c (或 b ) < 0 时,图形沿 X (或 Y )负向错切。
4. 二维图形的级联(组合)变换 对于复杂的图形变换,需要通过若干个变换矩阵的级联才 能实现。这里特别要注意的是矩阵级联的顺序,由于矩阵的乘 法运算不适用交换率,因此矩阵级联的顺序不同所得到的变换 结果也不相同。 例如:对任意直线的对称变换(直线方程为 Ax + By + C = 0) y y y
y
vyT vyB
V(视图区)
(vx,vy)
由两图的比例关系:
可得:
vx =
vxL vxR vx – vxL wx – wxL vxR – vxL= wxR – wxL vy – vyB wy – wyB vyT– vyB = wyT – wyB
o
x
vxR – vxL • ( wx – wxL ) + vxL wxR – wxL
二. 字符裁剪方法 1. 字符的表示方法 点阵字符——每个字符用一个位图(掩膜) 来表示,其大小
由位图的尺寸来确定,如 7 × 9,9 × 16,16 × 24 等。
11 01 01 01 01 01 01 11 00 1 0 0 1 0 0 0 1 0 10 0 0 10 0 10 1 00 0 00 0 00 0 00 0 00 0 00 0 0 0 0 0 0 0 0 0
二维图形变换中要注意的几个问题: 1. 旋转变换中角度正负的确定: 逆时针旋转为正,顺时针旋转为负。
2. 对称变换是相对于:X轴、 Y轴、坐标原点、直线 y = x 和
直线 y = – x 3. 弄清错切变换前后的关系: 沿 X 轴方向关于 Y 的错切----- y 坐标不变,而 x 坐标与原 坐标值( x , y )及变换矩阵中的 c 有关,即 x* = x + cy
由上图可知,点位于裁剪窗口之内的条件是:
xL≤ x ≤ xR yB≤ y ≤ yT
1. Ivan Sutherland算法(编码裁剪法) Ivan Sutherland算法也称Sutherland-Cohen算法。 其核心思想是:分区编码和线段分割。
分区编码方法:
以x=xL、x=xR、y=yT、y=yB将图形 区域划分成九个部分。采用四位编码表 示端点所处的位置: 第一位为“1”时,表示点在y=yT的上方; 0001 0000 0101 0100
否则,将线段分割成相等的两段,然后对每一小段重复上
述的检查,直至找到每段与窗口边界的交点或分割小段的长度
充分小,可以视为一点时为止。 实际上,这相当于采用对分查找法求交,分割次数最多不 超过线段端点的表示精度。
图例: P1 Pm1
P2 算法中的关键点:
①求离p1最近的可见点。(离p2 最近的可见点与此类似)
o
x
o
T1 = 1 0 0 0 1 0 C/A 0 1
x
o
T2= cosα -sinα sinα cosα
x
0 0
0
0
1
y
y
y
o
T3 = 1 0 0 0 -1 0 0 0 1
x
o
cosα -sinα 0 sinα cosα 0
x
0 0 1
o
T5=
x
1 0 0 0 1 0 -C/A 0 1
T4 =
组合变换矩阵为: cos2α T =T1×T2×T3×T4×T5= sin2α (cos2α -1)C/A sin2α -cos2α sin2α *C/A 0 0 1
2.三维图形的对称变换是相对于各个坐标平面进行的。
3.三维图形的旋转变换是指绕坐标轴的旋转。 在采用右手坐标系的情况下,图形绕坐标轴逆时针旋转时, 转角为正 ( 拇指指向坐标轴的方向,其余四指指向旋转方向 ), 顺时针旋转为负。
4.三维图形的级联(组合)变换
对于复杂的三维图形变换,也需要通过若干个变换矩阵的 级联才能实现。特别要注意的是变换的方法和矩阵级联的顺序。
求出P1P2和二条始边的交点的参数t1′和t1″
令 t1=max (t1′,t1″,0) 则 t1 即为A、B、P1三点中最靠近P2的点的参数。 求出P1P2和二条终边的交点的参数t2′和t2″ 令 t2=min (t2′,t2″,1) 则 t2 即为C、D、P2三点中最靠近P1的点的参数。 当 t2>t1时,方程(1)中参数t∈[t1,t2]的线段就是P1P2的可见部分。 当 t1>t2时,整个线段为不可见。
y
yT yB
B
A P1
P2 C
D
P1P2 线段上的可见部分。
将被裁剪的线段 P1P2 表示成参数方程形式: x=x1+△xt y=y1+△yt ( 0 ≤t ≤1 ) 其中
xL
xR
x
△x=x2-x1 △y=y2-y1
另外,把窗口的四条边分成二类:始边和终边。 当△x>=0 (或△y>=0)时 称 x=xL (或y=yB)为始边,x=xR (或y=yT)为终边。 当△x<0 (或△y<0)时 称 x=xL (或y=yB)为终边,x=xR (或y=yT)为始边。
左手笛卡儿坐标系(上图):观察坐标 系的原点通常设置在观察点(视点),Z轴作 为观察方向。 右手笛卡儿坐标系:视点确定在Z轴
视点
y
上的某一个位置,Z轴仍为观察方向(下图)。
o
视点
x z
3. 设备坐标系(Device Coordinates) 与图形设备相关连的坐标系叫设备坐标系。 例如,显示器以分辨率确定坐标单位,原点在左下角或左上
角;绘图机绘图平面以绘图精度确定坐标单位,原点一般在左
下角。
4. 规格化设备坐标系(Normal Device Coordinates)
为了使图形处理过程做到与设备无关,通常采用一种虚拟 设备的方法来处理,也就是图形处理的结果是按照一种虚拟设 备的坐标规定来输出的。这种设备坐标规定为0≤X≤1,0≤Y≤1, 这种坐标系称之为规格化设备坐标系。
4.2 二维图形变换
采用齐次坐标可将二维图形变换表示成如下形式: a b 0 [ x* y* 1 ] = [ x y 1 ] c d 0 l m 1 P*
变换后的 顶点坐标
=
P
变换前的 顶点坐标
•Baidu Nhomakorabea
M
二维变换矩阵
二维变换矩阵中: a c [l b d m] 是对图形进行缩放、旋转、对称、错切等变换。 是对图形进行平移变换
o
1 规格化设备坐标
x
然后,再从规格化设备坐标映射到具体的物理设备坐标中。 注意:当视图区和窗口在 x 方向和 y 方向上的伸缩比不同时, 图形映射后会发生畸变。
窗口—视图二维变换过程
建立物体的
变换到
在VC空间 进行裁剪
WC
VC
投影到 NDC
变换到 DC
在图形设备 上输出
三. 图形变换的特点 图形变换就是改变图形的几何关系,即改变图形顶点的坐 标,但图形的拓扑关系不变。 最基本的图形变换可以分别用矩阵形式表示为:
vyT – vyB vy = wy – wy • ( wy – wyB ) + vyB T B
若视图区为规格化设备坐标,即: vxR – vxL = 1 vxL = 0 ; ; vyT – vyB = 1 vyB = 0 1
y
V (视图区)
则:
wx – wxL vx = wxR – wxL wy – wyB vy = wyT – wyB
第四章 图形的几何变换及裁剪
4.1 概述
为了使被显示的对象数字化,通常是采用适当的坐标系来 描述被处理的对象。图形和数字之间的联系也就是通过坐标建 立起来的。因此,所谓图形的几何变换实质上就是图形的坐标 变换。 一. 几种坐标系
1. 世界坐标系(World Coordinates)
为了描述被处理的对象,要在对象所在 的空间中定义一个坐标系,这个坐标系的长
例如二维平面上的点(x,y)的齐次坐标表示为(h×x,h×y,
h),h是任一不为0的比例系数。 给定一个点的齐次坐标表示 : (x,y,h), 该点的二维笛卡儿直角坐标: (x / h,y / h)。 同样,对于一个三维空间的向量(x,y,z), 它在四维空间 中对应的向量即齐次坐标为(x×h,y×h,z×h,h),其中h≠0。 齐次坐标的概念可以推广到n维空间的向量。齐次坐标的表 示不是唯一的,通常当h=1时,称为规格化齐次坐标。
②新求得的端点必需重新编码(可采用子程序)。
③线段的可见否均由端点的编码状态确定(可采用子程序)。
特点:避免了复杂的乘除运算;可采用并行算法。
3. Liang(梁友栋)---Barsky 算法 算法的基本思想: 从A、B和 P1三点中找出最靠近 P2 的点( P1),从C、D和 P2三点中找 出最靠近 P1的点(C ),则 P1C 就是
二. 窗口——视图区变换 窗口:为选择图形的局部而设置的一个区域,一般采用矩形。 其作用类似于照相机的取景器。
视图区:在图形输出设备上定义的用于输出图形的区域,一
般也采用矩形。
窗口——视图区变换:在窗口和视图区确定以后,找出两者 之间的坐标对应关系,以便实现两者之间的映射。
y W(窗口) wyT (wx,wy) wyB o wxL wxR x
原图形上的任意一点 P(x,y) 对该直线的对称变换都可用下
式实现 : [x* y* 1]=[x y 1]· T
4.3 三维图形变换
三维变换矩阵可表示为: T= a d g l b e h m c p f q i r n s
其中: a b c d e f 产生比例、错切、镜象和旋转等基本变换。 g h i