《计算机图形学》练习题(答案)

《计算机图形学》练习题(答案)
《计算机图形学》练习题(答案)

《计算机图形学》练习题

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

12345V 6,边为E 1、E 2、E 3、E 4、E 5、

E 6。用多边形的扫描填充算法对此多边形进行填充时(扫描线从下到上)要建立边分类表(sorted edge table)并不断更新活化边表(active edge list)。

(1) 在表1中填写边分类表中每条扫描线上包含的边(标明边号即可); (2) 在表2中写出边分类表中每条边结构中各成员变量的初始值

(3) 指出位于扫描线y=6,7,8,9与10时活化边表中包含那些边,并写出这些边中的x 值、

y max 值、与斜率的倒数值1/m 。

x 图1多边形的边与顶点

x y max1/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)①平移这个对象,使得她的固定点与原点重合

②缩放这个在坐标原点的对象

③平移这个对象,使得她的固定点回到原始位置

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

-

-

=

?

?

?

?

?

?

?

?

?

?

1

1

)

1(

)

1(

1

'

'

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)①平移这个对象,使得她的固定点与原点重合

x’=xr+(x- xr)cos θ-(y- yr)sin θ

y’=yr+(x- xr)sin θ+(y- yr)cos θ

②旋转这个在坐标原点的对象

③平移这个对象,使得她的固定点回到原始位置

?????-=??????????0

cos sin sin cos 1''y x θθθθ

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) 根据线段端点的编码对图中所有线段分类,指出哪些线段就是可见的?哪些就是不可见的?哪些就是候选的裁剪线段。

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)中用实线绘出最后裁剪结果。

7.简述多边形扫描填充算法基本原理与大致步骤,并以具体例子说明边分类表内容、扫描过程中活化边表的信息变化。

(1)原理:

在直角坐标系中,假设有一条从左至右的扫描线穿过多边形,从左至右开始计数,与多边形交点为奇数时,开始进入多边形,与多边形交点为偶数时,走出多边形。这样在这相邻配对的奇偶交点间的所有象素都在多边形内。如图,奇数交点a,c,都就是入多边形,偶数交点b ,d 都就是走出多边形,相邻的奇偶交点配对,a,b 之间,c,d 之间的象素都多边形内,可见一条扫描线上,与多边形交点个数需要为偶数。依据这样的思路,扫描线从上到下从左到右依次扫过多好经过顶点或者多边形的边本身就就是水平的情况)

(2)步骤:

1)输入多边形的顶点的坐标

图1多边形裁剪 P 1 P 2 P 3 P 4 P 5 P 6 P 7 P 8 P 9 图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

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

图1(e)

P 1 P P 3 P 4

P 5 P 6 P 7

P 8 P 9 图1(f)

P 1 2P 3 P 4 P 5 P 6 P 7 P 8 P 9

相关主题
相关文档
最新文档