PAGE
PAGE 1
《计算机图形学》练习题
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次
m=(5-1)/(8-1)=0.57
x=7 y=4
P0=2y-x=1
2y=8 2y-2x=-6
k
pk
(xk+1,yk+1)
0
1
(2,2)
1
-5
(3,2)
2
3
(4,3)
3
-3
(5,3)
4
5
(6,4)
5
-1
(7,4)
6
7
(8,5)
2.已知一多边形如图1所示,其顶点为V1、V2、V3、V4、V5、V6,边为E1、E2、E3、E4、E5、E6。用多边形的扫描填充算法对此多边形进行填充时(扫描线从下到上)要建立边分类表(sorted edge table)并不断更新活化边表(active edge list)。
在表1中填写边分类表中每条扫描线上包含的边(标明边号即可);
在表2中写出边分类表中每条边结构中各成员变量的初始值
(3) 指出位于扫描线y=6,7,8,9和10时活化边表中包含那些边,并写出这些边中的x值、ymax值、和斜率的倒数值1/m。
x4
x
4
8
1
图1多边形的边和顶点
y
1
4
8
2
3
5
6
7
9
10
2
3
5
6
7
9
10
V1
V2
V3
V4
V5
V6
E1
E2
E3
E4
E5
E6
表1边分类表
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
0
1
2
3
4
5
6
7
8
9
10
表2 边的初始值
表2 边的初始值
边
x
ymax
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)?平移这个对象,使得他的固定点与原点重合
?缩放这个在坐标原点的对象
?平移这个对象,使得他的固定点回到原始位置
所以 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)
x’
x’=xr+(x- xr)cos θ -(y- yr)sin θ
y’=yr+(x- xr)sin θ +(y- yr)cos θ
(2)?平移这个对象,使得他的固定点与原点重合
?旋转这个在坐标原点的对象
?平移这个对象,使得他的固定点回到原始位置
A(-1,-1+) B(-1,-1+2) C(-1+3/2*,-1+9/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对应的编码