《计算机图形学》练习题(答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《计算机图形学》练习题
1.直线扫描转换的Bresenham算法
(1) 请写出生成其斜率介于0和1之间的直线的Bresenham算法步骤。
(2) 设一直线段的起点和终点坐标分别为(1,1)和(8,5),请用Bresenham算法生成此直线段,确定所有要绘制象素坐标。
(1)①输入线段的两个端点,并将左端点存储在(x0,y0)中
②将(x0,y0)装入帧缓存,画出第一个点
③计算常量∆x, ∆y, 2∆y, and 2∆y-2∆x,并得到决策参数的第一个值:
p0 = 2∆y - ∆x
④从k=0开始,在沿线路径的每个xk处,进行下列检测:
如果pk < 0,下一个要绘制的点就是(xk +1,yk) ,并且pk+1 = pk + 2∆y
否则下一个要绘制的点就是(xk +1, yk +1),并且 pk+1 = pk + 2∆y- 2∆x
⑤重复步骤4,共∆x-1次
(2)m=(5-1)/(8-1)=0.57
∆x=7 ∆y=4
P0=2∆y-∆x=1
2∆y=8 2∆y-2∆x=-6
2.已知一多边形如图1所示,其顶点为V1、V2、V3、V4、V5、V6,边为E1、E2、E3、E4、E5、E6。用多边形的扫描填充算法对此多边形进行填充时(扫描线从下到上)要建立边分类表(sorted edge table)并不断更新活化边表(active edge list)。
(1)在表1中填写边分类表中每条扫描线上包含的边(标明边号即可);
(2)在表2中写出边分类表中每条边结构中各成员变量的初始值
(3) 指出位于扫描线y=6,7,8,9和10时活化边表中包含那些边,并写出这些边中的x值、
y max值、和斜率的倒数值1/m。
表1边分类表
边 x y max 1/m 4 1 1 9 7 4 6 0 0 5 1 9 7 6 0 0 6 1 9 6 6 0 0 7 1 1 8 7 7 9 0 1 -1 8 2 7 9 9 1 -1 9
3 3 6
9 9 9
1 -1
3. 二维变换
(1) 记P(xf,yf)为固定点,sx 、sy 分别为沿x 轴和y 轴方向的缩放系数,请用齐次坐标(Homogeneous Coordinate)表示写出二维固定点缩放变换的变换矩阵。
(2) 把以A(0,0)、B(1,1)和C(5,2)为顶点的三角形以顶点C 为固定点放大2倍。求出放大后的三角形的顶点坐标。 (1)
(2) 平移这个对象,使得他的固定点与原点重合
Y 值(Scan Line
Number)
边(Edge Number) 1 0 2 0 3 0 4 E1 5 E6,E2 6 E6 7 E3 8 E5,E3 9 E4 10
1 2 3 4 5 6 7 8 9 1
0 表2 边的初始值
②缩放这个在坐标原点的对象
③平移这个对象,使得他的固定点回到原始位置
⎥⎥⎥⎦
⎤
⎢⎢⎢⎣⎡⋅⎥⎥⎥⎦⎤⎢⎢⎢⎣
⎡--=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡110
0)1(0)1(01''r r y f y x f x y x s y s s x s y x
所以 A(-5,-2) B(-3,0) C(5,2)
4二维变换
(1) 请用齐次坐标表示写出点Q(x,y)绕定点P(a,b)旋转的旋转变换矩阵。
(2) 求出以A(0,0)、B(1,1)和C(5,2)为顶点的三角形绕固定点P(-1,-1)点旋转450
后的三角形的顶点坐标。 (1)
(2)①平移这个对象,使得他的固定点与原点重合 ②旋转这个在坐标原点的对象
③平移这个对象,使得他的固定点回到原始位置
⎥⎥⎥⎦
⎤
⎢⎢⎢⎣⎡⋅⎥⎥⎥⎦⎤⎢⎢⎢⎣
⎡--+--=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡110
0sin )cos 1(cos sin sin )cos 1(sin cos 1''y x x y y x y x r r r r θθθθθθθθ
A(-1,-1+2) B(-1,-1+22) C(-1+3/2*2,-1+9/2*2)
5. 如图所示,L(-3,1)和R(2,6)为正方形裁剪窗口两个对角线角点,线段AB 、CD 、EF 、GH 和IJ 为被裁剪线段。用Cohen-Sutherland 线裁剪算法进行裁剪时要对线段的端点进行编码。 (1) 请写出编码规则,并在图中标出相应区域的编码 (2) 分别指出于点A 、B 、C 、D 、E 、F 、G 、H 对应的编码 (3) 根据线段端点的编码对图中所有线段分类,指出哪些线段是可见的?哪些是不可见的?哪些是候选的裁剪线段。
x ’=xr+(x- xr)cos θ -(y- yr)sin θ
y ’=yr+(x- xr)sin θ +(y- yr)cos θ
(1)
(2)A:0001 B:1000 C:0000 D:1010 E:0000 F:0000 G:0100
H:0010 I:1000 J:1000 (3)
可见的:EF
不可见的:GH,IJ 候选的:AB,CD
6. 分别用Sutherland-Hodgman 算法和Weiler-Atherton 算法裁剪图1所示的多边形
p 1p 2p 3p 4p 5p 6p 7p 8p 9p 1,裁剪窗口为如图所示的矩形窗口。 要求:
(1) 用实线分别在图1(a)(b)(c)(d)中绘出用Sutherland-Hodgman 算法沿裁剪窗口的左、
右、上、下窗口边裁剪后的中间结果
(2) 用Weiler-Atherton 算法对图1所示的多边形进行裁剪,以p1为起点,以图1箭头所
示的方向为走向,在图1(e)中用箭头表示画出所有走过的边(包括多边形边和窗口边)及其走向;并在图1(f)中用实线绘出最后裁剪结果。
图1多边形裁剪 P 1
2 7 图1(a)
P 1 P 2
P 3 P 4 P 5 P 6 P 7
P 8 P 9
图1(b) P 1 P 2 P 3 P 4 P 5
P 6 P 7
P 8 P 9 图1(c)
P 1
P 2
P 3
P 4
P 5
P 6 P 7
P 8
P 9 图1(d)
P 1
P 2
P 3
P 4 P 5
P 6 P 7 P 8
P 9