21. 使用bresenham算法扫描转换圆的步骤是什么?用伪代码程序来描述。
22. 建立用扫描线填充法将顶点为P0 (2,1), P1(1,7),P2(8,5),P3(7,1),P4(6,4)的多边形填充时的边分类表。
23. 用扫描线填充法将顶点为P0 (2,5), P1(2,10),P2(9,6),P3(16,11),P4(18,4),P5(12,2),P6(7,2)的多边形填充。写出填充步骤。
24. 已知图中所示多边形ABCD各顶点的坐标A(0,0)、B(4,0)、C(4,3)、D(2,3);多边形ABCD先平移使B点到达B1(3,3),然后相对B1点顺时针旋转900,使A、B、C、D分别到达A'、B'、C'、D'。试计算A'B'C'的坐标值。(20分)
(用齐次坐标进行变换,只要求列出变换矩阵。)
y4321DC0A12345
Bx
25. 用Weiler-Atherton算法对以下凹区域进行裁剪,请分别建立主多边形和裁剪多边形的顶点表,进行裁剪并输出裁剪后多边形的顶点序列。
S3
S8 C2 S6
S9
C1
S2
C4 S1 S7 C3
S5 S4 说明:实线为主多边形,虚线为裁剪多边形
26. 采用扫描线算法对多边形进行填充,请写出EL、AEL的结构,并分析扫描线算法的步骤和处理扫描线的步骤。
27. 若用扫描线填充法将顶点为P0,P1,P2,P3,P4,P5,P6的多边形填充。
yp112请写出其边分类表EL及y=8时的活化链表。 1110
9
8
7
6 5 4 321p0p2p4p6p3p5123456789101112x(a) 多边形P0P1P2P3P4P5P6P0
28. Dan Cohen 和Ivan Sutherland提出了采用四位数码来标识线段的端点与窗口区域关系的编码规则。假若裁剪窗口左下角坐标为(150,150),右上角坐标为(350,350),请写出判别坐标系上任一点在裁剪窗口内外的C语言的编码算法。
29. 当斜率k<1时,请写出DDA算法在第一象限的递推公式,并且用C语言编写相应的子程序代码。
30. 对于圆心在坐标原点的圆,用Bresenham算法生成整圆。写出其算法原理并编写程序代码。
31.
已知三角形ABC各顶点的坐标A(1,2)、B(5,2)、C(3,5),相对直线Y=4做对称
变换后到达A’、B’、C’。
试计算A’、B’、C’的坐标值。(要求用齐次坐标进行变换,列出变换矩阵)
32. 推导把二维平面上一条过P1(x1,y1),P2(x2,y2)的直线变换成与x轴重合的变换矩阵。
33. 已知三角形各顶点坐标为(10,10),(10,30)和(30,15),试对其进行下面变换,绕原点旋转90?,再沿x轴平移20,沿y轴平移15,写出变换矩阵,画出变换后的图形。
34. 已知在OXYZ坐标系下的平面方程是ax+by+cz+d=0,求变换矩阵T,使该平面变成z=0平面。
扫描线填充算法的基本思想是用一系列平行直线去切割轮廓线,通常有成对的交点出现,每对
交点就代表扫描线与轮廓线的一个相交区间。但经典的扫描线填充算法仍然存在不必要的重复操作。
种子填充算法是在被填充的区域中预先设置一个种子像素,然后以该像素为起点,按四向算法或八向算法搜索下一个像素,由此出发蔓延直到找到区域内所有像素;该算法的缺点是种子点的找寻比较困难,有的像素可能被访问多次,并且种子点的入栈和出栈也降低了算法的效率。 边填充算法的基本思想是对于每一条扫描线和轮廓线的每个交点,将该扫描线上交点右方的所有像素取补。它的优点在于简单,与边的顺序无关;缺点是每个像素可能被访问多次,也需要各扫描线与每条边进行求交运算。