B(5,2)、C(3,5),相对直线Y=4做对称变换后到达A’、B’、C’。
试计算A’、B’、C’的坐标值。(要求用齐次坐标进行变换,列出变换矩阵)
8、设窗口左下角点坐标为(XW1,YW1),宽为LW,高为HW,视区左下角点坐标为(XV1,YV1),宽为LV,高为HV,已知窗口中有一点A(XA,YA),在视区中对应的坐标为A’(X’A,Y’A)。试计算A’的坐标值。(要求用齐次坐标进行变换,列出变换矩阵,列出计算式子,不要求计算结果)
A θo (XW1,YW1)
(XV1,YV1)
9、用Weiler-Atherton算法对以下凹区域进行裁剪,请分别建立主多边形和裁剪多边形的顶点表,进行裁剪并输出裁剪后多边形的顶点序列。
说明:1)为主多边形和裁剪多
S3 S4 边形设定方向
S7 S8 2)一系列交点中,I1I2I3是入
点,I4是出点
C2 I2 C3 3)建立两类交点表
S6 I3 S5 4)裁剪,输出新的顶点序列: I3S6I2C3,I1I4C1
主多边形 S1
S2 S3 S4 S5 I3 S6 I2 S7 S8 S9 I1 I4
S9
C1
S2
I1
I4 C4 S1
说明:实线为主多边形,虚线为裁剪多边形
裁剪多边形
C1 I1 C2 I2 C3 I3 C4 I4 C1
S1
10、分析边标志算法的实现过程,并写出其算法的C语言描述。
11、采用扫描线算法对多边形进行填充,请写出EL、AEL的结构,并分析扫描线算法的步骤和处理扫描线的步骤。
12、若用扫描线填充法将顶点为P0,P1,P2,P3,P4,P5,P6的多边形填充。请写出其边分类表EL及y=8时的活化链表。
13、已知一直线段起点(0,0),终点(-8,-3),利用Bresenham算法生成此直线段,写出生成过程中坐标点及误差ε的变化情况。并在下面的方格中,标出直线上各点
误差计算公式:误差初值??(x1)?2?y??x???(xi?1)??(xi)?2?y?2?x?(yi)?0 ??(x)??(x)?2?y?(yi)?0i?1i?14、用扫描线填充法将顶点为P0 (2,5), P1(2,10),P2(9,6),P3(16,11),P4(18,4),
P5(12,2),P6(7,2)的多边形填充。写出填充步骤。
P3 P1
P2 P4 P0
P6 P5
15、平面上给定三个顶点Qi(i=0,1,2),试构造一条插值这三个顶点的二次Bezier曲线。要求简述基本原理并画出示意图。
16、给定顶点P0P1P2P3P4P5P6构成的控制多边形,绘出三次B样条曲线的形状示意图。 要求:简要说明作图过程,保留作图辅助线,作出(或文字说明)曲线上各特征点的切线矢量。
画出以P0P1P2 P3决定的地0段3次样条曲线:
M1为P0P2的中点,A点位于P1M1的1/3处,A点的切矢平行于P0P2,且等于P0P2的1/2,A点的二阶导数矢量为中线矢量P1M1的两倍;M2为P2P3的中点,B点位于P2M2的1/3处,A点的切矢平行于P1P3,且等于P1P3的1/2,B点的二阶导数矢量为中线矢量P2M2的两倍;
正确标出A、B两点、 指出A、B点的切矢、 指出A、B点的二阶导数矢量
以同样的方法画出其它样条曲线。
16、如图,取正方形四个顶点P0,P1,P2,P3作为特征多边形顶点,采用二次B样条曲线绘出光滑封闭曲线的形状示意图。采用三次B样条曲线绘出光滑封闭曲线的形状示意图。
要求:简要说明作图过程,保留作图辅助线,作出(或文字说明)曲线上各特征点的切线矢量。
17、给定四个顶点Q0(10,10),Q1(10,110),Q2(110,110),Q3(110,10),绘出插值该四个顶点的三次B样条曲线的形状示意图。
要求:简要说明作图过程,保留作图辅助线,作出(或文字说明)曲线上各特征点的切线矢量。
18.读下面的程序并找出程序中的错误: #include
int a=150,b;
int driver=DETECT,mode; initgraph(driver,mode,\for(b=10;b<=140;b+=10) ellipse(320,240,0,360,a-b,b); }
19.读下面的程序并说出程序执行结果: #include
int i,c,x=5,y=6;
int driver=DETECT,mode; printf(\scanf(\
initgraph(&driver,&mode,\cleardevice(); setcolor(9); for(i=c;i rectangle(x,y,x+140,y+140); x=x+70; y=y+50; setfillstyle(SOLID_FILL,i); floodfill(x,y,i); } getch(); closegraph(); } 20.读下面的程序并说出程序执行结果: #include int i,t,x=300,y=50; int driver=DETECT,mode;