计算机图形学期中考试题answer
2012年计算机图形学期中
1.简述生成任意直线的DDA算法的基本思想及程序实现。已知一直线段起点(0,
0),终点(8,6),利用DDA算法生成此直线段,写出生成过程中坐标点的变化情
况,并在二维坐标系中,标出直线上各点.
答:
设直线的起点坐标为( | x | s | , | y | s | ),终点坐标为( | x | e | , | y | e | ),令 | ?x | ? | x | e | ? | x | s | , | ?y | ? | y | e | – | y | s | ,则 |
直线的参数方程是
x | ? | x s y s | ? | ?x ?y | ?t ?t |
y |
(1)
其中t 为参数( | 0 | ?t | ? | 1 | )。 |
目标是快速地求出能很好地表示直线的像素。提高速度的方法之一是把乘法
用加法实现。可采用等参数步长?t计算直线上的点。设( x iy i )是第步得到的直线 | ||
用式(2)可求得图中直线 | P sP e | 上用三角形表示的点,但显示时要用像素(也即 |
图中网格结点)来表示,可用舍入的办法得到最靠近三角形的像素,用这些像素(图
中的实心圆点)来表示直线。这个方法便称为DDA方法。
程序实现:
void dda(intx1,inty1,intx2,inty2)//直线DDA
{
int k,i;
floatx,y,dx,dy;
k = abs(x2—x1); | |
if (abs(y2—y1)〉k) k = abs(y2-y1); | |
计算机图形学期中考试题answer
dx= float(x2-x1)/k;
dy=float(y2—y1)/k;
x=float(x1);
y=float(y1);
for(i=0;i〈k;i++){
gl_Point(int(x+0.5),int(y+0.5));
x= x+dx;
y= y+dy;
} | |
用 画起点(0,0) | |
X | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
Y | 0 | 0.75 | 1。5 | 2.25 | 3 | 3.75 | 4.5 | 5。25 | 6 |
取整 | (0,0) | (1,1) | (2,2) | (3,2) | (4,3) | (5,4) | (6,5) | )(7,5) | (8,6) |
计算机图形学期中考试题answer
(说明:画成下图形式也行,但下图不是此题答案)
2.介绍几种多边形边界扫描转换算法和区域填充算法,并简述多边形边界扫描转换算法和区域填充算法的区别。
答案:多边形填充的扫描线算法,边缘填充算法;边界标志算法;简单的种子填充算法;扫描线种子填充算法.
算法的不同之处:
基本思想不同:多边形的扫描转换是指将多边形的顶点表示转换成点阵表示。在扫
描转换过程中利用了多边形各种形式的连贯性。区域填充只改变区域的颜色,不改 |
计算机图形学期中考试题answer
对边界的要求不同: 在多边形的扫描转换中要求每一条扫描线与多边形边界的交点个数是偶数。在区域填充中要求4连通区域的边界为封闭的8连通区域,而8连通区域的边界为封闭的4连通区域.
算法的要求不同:在区域填充中要求指定区域内的一点为种子点,然后从这点开始对区域进行着色。对多边形的扫描转换没有这个要求.
3.求将图中的空间四面体关于E点整体放大两倍,写出变换矩阵以及变换后图形各点的坐标。
计算机图形学期中考试题answer
解:坐标系中E点移至坐标原点对应的矩阵
M | 1 | ? | ?1 ? ?0 ?0 ? ?0 | 0 | 0 | ? | 2 | ? |
1 | 0 | ? | 2 | |||||
0 | 1 | ? | 2 | |||||
0 | 0 | 1 | ||||||
相对坐标原点放大2倍对应的矩阵
M | 2 | ? | ?????? | 2 | 0 | 0 | 0 | ? |
0 | 2 | 0 | 0 | |||||
0 | 0 | 2 | 0 | |||||
0 | 0 | 0 | 1 |
坐标原点平移回E点对应的矩阵为
?1 0 0 2? |
计算机图形学期中考试题answer
M | ? | ?1 ? ?0 ?0 ? ?0 | 0 | 0 | 2 | ?????? | ? | ?????? | 2 | 0 | 0 | 0 | ?????? | ? | ?1 ? ?0 ?0 ? ?0 | 0 | 0 | ? | 2 | ?????? | ? | ?????? | 2 | 0 | 0 | ? | 2 | ? |
1 | 0 | 2 | 0 | 2 | 0 | 0 | 1 | 0 | ? | 2 | 0 | 2 | 0 | ? | 2 | |||||||||||||
0 | 1 | 2 | 0 | 0 | 2 | 0 | 0 | 1 | ? | 2 | 0 | 0 | 2 | ? | 2 | |||||||||||||
0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | |||||||||||||||
变换后各点的坐标为
?2 0 0?2? ?0 2 2 0 2? ??2 2 2 ?2 2?
?
?02 0?2?
??
?
?00 2 22?
??
?
??2 ?2 2 2 2?
?
?0 02?2? ?00 0 0 2? ??2 ?2 ?2 ?2 2?
? ? ? ? ? ?
?0 0 01? ?11 11 1? ?1 1 1 1 1?
因此,变换后各点坐标分别为(-2,—2,-2),(2,—2,—2),(2,2,—2)
(-2,2,-2)(2,2,2)其中E点保持不变.
4.利用线段裁剪的Sutherland—Cohen算法,对线段AB进行裁剪(CDEF为
F E
裁剪框)
B
C D
答案:(按书上的编码规定和判断顺序)
第一步是判断直线段是否完全在窗口内或显然在窗口外。可按如下编码原则:
在x=xL左侧的区域,编码的第四位是1;
在x=xR右侧的区域,编码的第三位是1;
在y=yB下侧的区域,编码的第二位是1;
在y=yT上侧的区域,编码的第一位是1。各1分。
或给出下图也得4分
计算机图形学期中考试题answer
|
由上述编码知A编码:1001,B编码得0000;按如下判断:
对要AB两个端点,如果其所在的区域的编码均是0000,则这条线段完全可见;如果两个编码的逻辑与不为0000,则这条线段完全不可见。则AB不属于任何上述两种情况,则转入下面的第二步(3分):
求出AB与FE的交点M,AM按照第一步的判断显然是完全不可见的,因而只要
由于MB 还是不能用第一步下结论,又从M的编码1000 发现M在y=yT的上侧, |
如果没有明确在第二步中分出三小步,只要说清楚也可得3分。
(说明:书上第二步的判断顺序是:上、下、左、右界(8,4,1,2)
Copyright © 2019- xgro.cn 版权所有
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务