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 &#43;1,yk) &#xff0c;并且pk&#43;1 &#61; pk &#43; 2∆y
否则下一个要绘制的点就是(xk &#43;1, yk &#43;1)&#xff0c;并且 pk&#43;1 &#61; pk &#43; 2∆y- 2∆x
⑤重复步骤4&#xff0c;共 ∆x-1次
(2)m&#61;(5-1)/(8-1)&#61;0.57
∆x&#61;7 ∆y&#61;4
P0&#61;2∆y-∆x&#61;1
2∆y&#61;8 2∆y-2∆x&#61;-6
2&#xff0e;已知一多边形如图1所示&#xff0c;其顶点为V 1、V 2、V 3、V 4、V 5、V 6&#xff0c;边为E 1、E 2、E 3、E 4、E 5、E 6。用多边形的扫描填充算法对此多边形进行填充时(扫描线从下到上)要建立边分类表(sorted edge table)并不断更新活化边表(active edge list)。
(1) 在表1中填写边分类表中每条扫描线上包含的边(标明边号即可)&#xff1b;
(2) 在表2中写出边分类表中每条边结构中各成员变量的初始值
(3) 指出位于扫描线y&#61;6,7,8,9和10时活化边表中包含那些边&#xff0c;并写出这些边中的x 值、y max
值、和斜率的倒数值1/m 。
表1边分类表 x