.
位于多边形外,且两者间隔排列。边的连贯性:相邻两条扫描线与多边形的的同一条边相交,其交点可按递增一个常量来计算,如:x2=x1+1,则y2=y1+1/k (k为该多边形边的斜率)。
9、简述Bezier曲线的不足之处。
答:当Bezier曲线的n次多项式逼近方法中当n较大时,计算量也就迅速增大,而且计算结果也不稳定。同时,其特征多边形的顶点离开得很远,造型时不利于精确控制。若是采用插值形式,除了计算量更加庞大以外,曲线的保形性也难以保证。
10、建立图形软件可采用哪三种方法?
(1)图形程序包 (2)修改高级语言 (3)专用高级图形语言
11、在观察空间中,如何确定投影的类型和方向?
投影类型由参数pt可以确定,如果是透视投影,则投影中心就是投影参考点PRP;如果是平行投影,投影方向是从投影参考点PRP指向窗口中心CW。其中,投影参考点PRP是观察坐标系中的三维点。
12、简述编码裁剪法(即Cohen-Sutherland线段裁剪法)的算法过程。
由Dan Cohen和Ivan Sutherland提出的区域编码判断方法,采用四位数码来标识线段的端点与窗口区域的关系,然后:
(1)检查线段P1P2是否为完全可见,或完全不可见,对于这两种情况或完全取之,或完全弃之,否则 “2”。
(2)找到P1P2在窗口外的一个端点P1(或P2); (3)用窗口的边与P1P2的交点取代端点P1(或P2);
(4)P1P2线段是否完全可见,若是,则结束,否则转到“2“继续执行。
三、应用题
1、分析边标志算法的实现过程,并写出其算法的C语言描述。
答:边标志算法可以克服象素被重复访问这一缺点。其实现过程分为两步:1)勾画轮廓线,在每条扫描线上建立各区段的边界象素对;2)填充这些边界象素之间的全部象素。
算法的C语言描述如下:
# define FALSE 0 edgefill(Polydef) {
对多边形每条边转换; inside=FALSE;
for(每条与多边形Polydef相交的扫描线) for(扫描线上每个象素点)
{ if(象素点被打上边标志) inside=!(inside); if (inside!=FALSE) putpixel(x,y,color);
else putpixel (x,y,bcolor); } }
.
.
2、简述深度缓存算法及其特点。 答:深度缓存算法是一种典型的、也是最简单的图象空间的消隐算法。在屏幕空间坐标系中, 轴为观察方向,通过比较平行于 轴的射线与物体表面交点的 值(又称为深度值),用深度缓存数组记录下最小的 值,并将对应点的颜色存入显示器的帧缓存。 深度缓存算法最大的优点是简单。它在 、 、 方向上都没有进行任何排序,也没有利用任何相关性。算法复杂性正比于 。在屏幕大小,即 一定的情况下,算法的计算量只与多边形个数 成正比。
另一个优点是算法便于硬件实现,并可以并行化。
3、假设在观察坐标系下窗口区的左下角坐标为(wxl=10,wyb=10),右上角坐标为(wxr=50,wyt=50)。设备坐标系中视区的左下角坐标为(vxl=10,vyb=30), 右上角坐标为(vxr=50,vyt=90)。已知在窗口内有一点p(20,30),要将点p映射 到视区内的点p`,请问p`点在设备坐标系中的坐标是多少?(本题10分) 解:○1将窗口左下角点(10,10)平移至观察坐标系的坐标原点,平移矢量为(-10,-10)。 ○2针对坐标原点进行比例变换,使窗口的大小和视区相等。比例因子为: Sx=(50-10)/(50-10)=1; Sy=(90-30)/(50-10)=1.5。 ○3将窗口内的点映射到设备坐标系的视区中,再进行反平移,将视区的左下角点移回到设备坐标系中原来的位置(10,30),平移矢量为(10,30)。
T?T1?T2?10?1p`?[x y 1]?[x y 1].?0?0?[20 60 1]?1??0??10011??001??103000??101.50??[20 30 1].?01.5151??0150??100??10???01.50???0010??100?0??01.50??1??0151?0?0?1?
p`点在设备坐标系中的坐标是(20,60)。
4、如下表是采用DDA算法画出(0,0)到(5,2)的直线的数据,请填写空格处。
i 1 2 3 4 5 6 解:
i 1 .
xi 0 1 2 3 4 5 yi 0 2 yi+0.5 0.5 2.5 int(yi+0.5) 0 2 xi 0 yi 0 yi+0.5 0.5 int(yi+0.5) 0 .
2 3 4 5 6 1 2 3 4 5 0.4 0.8 1.2 1.6 2 0.9 1.3 1.7 2.1 2.5 0 1 1 2 2
5、已知三角形ABC各顶点的坐标A(1,2)、B(5,2)、C(3,5),相对直线Y=4做对称变换后到达A’、B’、C’。
试计算A’、B’、C’的坐标值。(要求用齐次坐标进行变换,列出变换矩阵) 解:
(1)将坐标系平移至P1 (0,4)点
?100???TA??010???0?41?? (2) 以X轴对称
?100???TB??0?10???001?? (3)将坐标系平移回原处
?100???TC??010???041??
?100????0?10???081??
(4) 变换矩阵:T=TA*TB*TC=
(5) 求变换后的三角形ABC各顶点的坐标A’、B’、C’
?X'AA’:
Y'A?100???1???121??T??121???0?10???161???081??
XA'=1, Y A'=6
?X'BB’:
YB1???5?100???21??T??521???0?10???561???081??
XB'=5, Y B'=6
?X'CC’:
Y'C?100???1???351??T??351???0?10???331???081??
XA'=3, Y A'=3
6、试对下图中的多边形进行裁剪,用图表示裁剪过程。
.
.
依次用窗口的左、上、右、下四条边界进行裁剪:
7、计算机图形系统包含哪些外部设备? 图形输入设备:概念、特点 图形显示设备:概念、结构原理、工作方式、特点 图形绘制设备:概念、特点
8、简述消隐算法的分类。
答:1.物体空间的消隐算法:物体空间是物体所在的空间,即规范化投影空间。这类算法是将物体表面上的
个多边形中的每一个面与其余的
。
个象素点,物体
个面进行比较,精确求出物体
上每条边或每个面的遮挡关系。计算量正比于
2.图象空间的消隐算法:图象空间就是屏幕坐标空间,这类算法对屏幕的每一象素进行判断,以决定物体上哪个多边形在该象素点上是可见的。若屏幕上有 表面上有
个多边形,在该类消隐算法计算量正比于
。
9、设窗口左下角点坐标为(XW1,YW1),宽为LW,高为HW,视区左下角点坐标为(XV1,YV1),宽为LV,高为HV,已知窗口中有一点A(XA,YA),在视区中对应的坐标为A’(X’A,Y’A)。试计算A’的坐标值。(要求用齐次坐标进行变换,列出变换矩阵,列出计算式子,不要求计算结果)
A θo (XW1,YW1)
(XV1,YV1)
.
.
?1TA???0???XW1解:1)将坐标系平移至(XW1,YW1)点:
01?YW10?0??1??
?Lv?L?w?TB??0??0?? 2)作比例变换:
0HvHw0?0???0??1???
01?YV10?0??1??
?1Tc???0???XV1 3)将坐标系平移至视区左下角(XV1,YV1):?cos?TD????sin???0 4)旋转视区θ度:
sin?cos?00?0??1??
5)变换矩阵为:T=TA*TB*TC*TD
?'???'XY1?XY1?TAAAA??????? 6)求变换后的Aˊ点:?
10、采用扫描线算法对多边形进行填充,请写出EL、AEL的结构,并分析扫描线算法的步骤和处理扫描线的步骤。
答: 活化边AET:指与当前扫描线相交的多边形的边,也称为活性边。 Ymax X △X(即1/k)
边的分类表ET:把有效边按与扫描线交点x坐标递增的顺序存放在一个链表中,此链表称为有效边表。
有效边表的每个结点: Ymax X 1/k next 算法步骤:
(1)确定多边形所占有的最大扫描线数,得到多边形顶点的最小和最大y值(ymin和ymax)。 (2)从y=ymin到y=ymax,每次用一条扫描线进行填充。 (3)对一条扫描线填充的过程可分为四个步骤: a.求交 b.排序 c.交点配对 d.区间填色
11、
解:堆栈变化过程如下:
.
计算机图形学 复习题



