当前位置:首页 > 计算机图形学总复习答案
?4 ??7?7 ???1137
4??1??010??83???661????100??261?????9?11???1????50?1?1?1??1??11、第7章习题1
12、写出有关消隐的Z缓冲区算法的伪代码并指出该算法的关键点。
答:
for (每一个多边形) {
扫描转换该多边形; // 即确定其投影到哪些像素 for (多边形所覆盖的每个像素(x,y)) {
计算该多边形在该像素的深度值 z(x,y); if(z(x,y) >ZB(x,y)) {
用z (x,y) 替换ZB(x,y)的值;
用多边形在 (x,y) 处的颜色值替换FB(x,y)的值; } } }
z缓冲区算法的关键是要尽快判断出哪些点落在一个多边形内,并尽快完成多边形中各点深度值(z值)的计算。针对图形表面的不同类型,可以有多种计算方法。利用多边形内的点在水平和垂直方向上的连贯性,可以得到多边形的点及其深度值的算法。
13、四连通区域种子填充算法如下:
17
请根据上述算法说明其基本思想。
答:基本思想是:从多边形内部任一点(像素)出发,依“上、下、左、右”顺序判断相邻像素,若其不是边界像素且没有被填充过,对其填充,并重复上述过程,直到所有像素填充完毕。 14、给定四点P0(0,0,0),P1(1,1,1),P2(2,-1,-1),P3(3,0,0),用其做为特征多边形来构造一条三次Bezier曲线,并计算参数t为0、1/3、1/2、2/3、1的P(t)值。其中Bezier曲线的定义式P(t)为:
其中,B i, n ( t ) 称为伯恩斯坦 (Bernstein) 基函数,它的多项式表示为:
答:做题思路:
根据Bezier曲线的定义式得到三次Bezier曲线参数式为: P(t)=(1-t)p0+3t(1-t)P1+3t(1-t)P2+tP3
3
2
2
3
= P0+3(P1-P0)t +3(P0-2P1+P2)t+(-P0+3P1-3P2+P3)t
写成分量形式:
X(t)= X0+3(X1-X0)t +3(X0-2X1+X2)t+(-X0+3X1-3X2+X3)t
18
2
3
23
Y(t)= Y0+3(Y1-Y0)t +3(Y0-2Y1+Y2)t+(-Y0+3Y1-3Y2+Y3)t
Z(t)= Z0+3(Z1-Z0)t +3(Z0-2Z1+Z2)t+(-Z0+3Z1-3Z2+Z3)t
将P(0,0,0),P(1,1,1),P(2,-1,-1),P(3,0,0)各点坐标代入得:
0
1
2
3
2
3
23
X(t)=3t Y(t)=3t-9t+6t Z(t)= 3t-9t+6t
将t分别等于0,1/3, 2/3,1代入上述参数曲线,得 P(0)=(0,0,0) P(1/3)=(1,2/9,2/9) P(1/2)=(3/2,0,0) P(2/3)=(2,-2/9,-2/9) P(1)=(3,0,0)
2
3
2
3
15、请写出Bresenham生成圆弧的程序
答:Bresenham生成圆弧的程序如下
void Bresenham_Circle (int R,int color) {
int x,y,d; x=0;y=R; d=3-2*R; while(x Circle_Points (x,y,color); if(d<0) d+=4*x+6; else { d+=4*(x-y)+10; y-=1; } x++; } if(x==y) Circle_Points (x,y,color); } void Circle_Points(int x,int y, int color) { Putpixel (x, y, color); Putpixel (x, -y, color); 19 Putpixel (-x, y, color); Putpixel (-x, -y, color); Putpixel (y, x, color); Putpixel (y, -x, color); Putpixel (-y, x, color); Putpixel (-y, -x, color); } 16请写出中点画圆的程序 答:中点画圆的程序如下 void midpointcircle(int r,int color) { int x,y; float d; x=0;y=r;d=1.25-r; Circle_Points(x,y,color); while(x<=y) { if(d<0) d=d+2*x+3; else { d=d+2(x-y)+5; y--; } x++; Circle_Points(x,y,color); } } void Circle_Points(int x,int y, int color) { Putpixel (x, y, color); Putpixel (x, -y, color); Putpixel (-x, y, color); Putpixel (-x, -y, color); Putpixel (y, x, color); Putpixel (y, -x, color); Putpixel (-y, x, color); Putpixel (-y, -x, color); } 20
共分享92篇相关文档