计算机图形学 期末复习 微课版 孔令德 四、二维变换与裁剪 期末复习

文章介绍了二维图形的平移、比例、旋转、反射和错切等变换,强调了齐次坐标在统一表示这些变换中的作用。此外,讨论了复合变换的概念以及如何通过窗视变换适应不同坐标系。重点讲述了Cohen-Sutherland和Liang-Barsky两种直线裁剪算法,用于确定图形是否在窗口内并进行适当的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二维变换

平移变换

平移变换用齐次坐标表示。对点P(x,y)作平移变换

image.png

比例变换

image.png
点的坐标在x方向放大为原先的Sx倍,在y方向放大为原先的Sy倍,这种变换称为比例变换

旋转变换

image.png
(逆时针旋转)

反射变换

image.png

错切变换

image.png

image.png

齐次坐标

作用:将二维变换统一表示为一个矩阵,即用一种一致的乘法处理二维变换问题。

平移

image.png

比例

image.png

旋转

image.png
将两个sin的正负性互换 为顺时针

反射

image.png

错切

image.png

二维复合变换

复合变换是指图形做一次以上的几何变换。
M=MnMn-1…M2M1
M为复合变换矩阵,后面的为单次基本几何变换矩阵
变换方法:首先将参考点平移到坐标系原点,对坐标系原点进行比例变换或
旋转变换,然后再进行反平移,将参考点平移回原位置。

例4-1 一个由顶点P0(10,10),P1(30,10)和P2(20,25)
所定义的三角形,相对于点Q(10,25)逆时针旋转30°,求变
换后的三角形顶点坐标。
image.png
世界坐标系:三维直角世界坐标系可分为右手坐标系与左手坐标系两种,zw轴的指向按照右手螺旋法则或左手螺旋法则从xw轴转向yw轴确定。
image.png
用户坐标系(建模坐标系):建模坐标系,右手系,方便建模设置
观察坐标系:视点坐标系,左手系,从眼睛位置描述物体
屏幕坐标系:二维或三维坐标系,左手系
设备坐标系:设备坐标系,x轴向右,y轴向下可以规范化为规格化坐标系,x [0-1] ,y[0-1]。

窗口与视图

在观察坐标系中定义的确定图形显示内容的区域称为窗口。此时窗口内的图形是用户希望在屏幕上看到的,窗口是裁剪图形的标准参照物。
在设备坐标系中定义的输出图形的区域称为视区。视区和窗口常为矩形,大小可以不相同。一般情况下,用户把窗口内感兴趣的图形输出到屏幕上相应的视区内。

窗视变换

图形输出需要从窗口到视区的变换,只有位于窗口内的图形才能在视区中输出,并且输出的形状要根据视区的大小进行适当调整,这称为窗视变换
image.png
image.png
image.png

裁剪

image.png

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 “与”为零完全不可见
image.png

Cohen-Sutherland裁剪算法

如果一段直线的两个端点都位于窗口内,那么该段直线就完全位于窗口之内,应“简取” 。
如果一段直线的两个端点位于窗口的同一侧,那么该段直线就完全位于窗口之外,应“简弃”。
若不能将直线段“简取”或“简弃”,循环地用窗口的4条边界与直线段“求交”并检测是否“简取”或者“简弃”,直到剩余部分完全位于窗口之内或完全位于窗口之外。
image.png
算法:
(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
image.png

Liang-Barsky算法

起点为P0(x0,y0),终点为P1(x1,y1)直线的参数方程为
image.png
对于坐标为(wxl,wyb)、(wxr,wyt)的裁剪窗口,直线段裁剪条件:
image.png
image.png

n=1表示左边界;n=2表示右边界;n=3表示下边界;n=4表示上边界。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小旺不正经

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值