图形学练习题及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.11 请图示高级光栅图形显示子系统结构?
5.0边标志填充算法的基本思想是先在屏幕上生成多边形轮廓线,然后逐条扫描线处理将着色的象素点依x坐标递增的顺序配对。
处理中:逐点读取象素值,若为边界色,则对该象素值进行颜色切换。
请用伪码写出该算法。
参考答案如下:(关键点是双循环,标志取反及判断)
EdgeMarkFill(int p[][2],int n,int boundarycolor,int newcolor) {
int i,x,y,flag,xmin,xmax,ymin,ymax;
setcolor(boundarycolor); /*设置画笔色*/
for(i=0 ;i<n;i++)
line(p[i][0],p[i][1],p[(i+1)%n][0],p[(i+1)%n])[1]); /*画出多边形的n条边*/
用求极值的算法,从多边形顶点数组p中,求出xmin,xmax,ymin,ymax;
for(y=ymin;y<=ymax;y++)
{
flag=-1;
for(x=xmin;x<=xmax;x++)
{
if(getpixel(x,y)==boundarycolor)
flag=-flag;
if(flag==1)
putpixel(x,y, newcolor);
}
}
}
5.1根据改进的有效边表算法,建立下图的边表(ET表)和有有效边表(AET表)。
多边形图如下图(a):
(a)多边形
ET表和AET表如下图(b)(c)所示:
(b)ET表(c)AET
6.0 将齐次坐标技术应用到计算机图形学中的作用是什么?
1)使图形变换转化为表示图形的点集矩阵与某一变换矩阵相乘这一单一问题,因而可以借助计算机的高速计算功能,很快得到变换后的图形,从而为高速动态的计算机图形显示提供了可能。
2)齐次坐标技术便于硬件实现。
3)齐次坐标技术便于变换合成。
10.2 在计算机中实现真实感图形绘制必须包含哪些步骤,各步骤解决什么样的问题?
1)在计算机中进行场景造型,解决三维场景的几何描述和计算机的输入问题;2)进行取景变换和透视变换,解决三维几何描述转换为二维透视图的问题;3)进行消隐处理,解决视域之外或被其他景物遮挡的不可见面的消除问题;4)进行真实感绘制,根据假定的光照条件和景物外观因素,依据一定的光照模型,计算可见面投射到观察者眼中的光强大小,据此生成投影面上每一个像素的颜色值,在图形显示设备上绘制。
10.0光线跟踪(Ray Tracing)方法基于几何光学的原理,通过模拟光的传播路径来确定反射、折射和阴影等,如图所示。
其基本思想是从视点出发,确定穿过每个像素中心的光线路径,然后,沿这束光线累计光强,并将最终值赋给相应像素。
对于每一像素光线,对场景中的所有物体表面进行测试以确定其是否与该光线相交,并计算出交点的深度,深度最大(z值)的交点即为该像素对应的可见点。
然后,继续考察通过该可见点的从属光线(Secondary Rays)。
对每条从属光线重复过程:与场景中的所有物体求交。
然后递归地在沿从属光线方向最近的物体表面上生成下一折射和反射光线。
当由每个像素出发的光线在场景中被反射和折射时,逐个将相交物体表面加入到一个二叉光线跟踪树中。
当树中的一束光线到达预定的最大深度或到达某光源时,就停止跟踪。
请用伪码描述该算法。
参考答案如下:
Color RayTracing(Ray ray,int depth)
{ 求ray与物体表面最近的交点P;
if(有交点)
{ 用局部光照明模型计算P点的Il;
color=I1;
if(depth<给定的最大跟踪层次)
{ 计算ray 的反射光线;
Is=RayTracing(反射光线, depth+1);
if(物体是透明的)
{ 计算ray的透射光线;
It= RayTracing(透射光线, depth+1);
}
color=Il+Is+It;
}
}
else color=背景色;
return color;
}。