计算机科学与技术系计算机图形学实验指导书计算机图形学实验指导书计算机科学与技术系2011年6月计算机科学与技术系计算机图形学实验指导书1目录实验一:图形填充和剪裁........................................................................1实验二:曲线和曲面的绘制....................................................................2实验三:真实感图形绘制........................................................................4附录BorlandC++图形(BGI)函数简介............................................................7计算机科学与技术系计算机图形学实验指导书1实验一:图形填充和剪裁一、实验目的1.理解和掌握二维图形区域单色填充的原理和算法;2.理解和掌握剪裁图形的原理和算法。二、实验内容1.以多边形为对象,选择种子填充或扫描填充算法,设计和实现多边形的单色填充;2.设计多边形裁剪的算法和程序,并能演示裁剪过程。三、实验设备及工具1.硬件:PC机Pentium100以上。2.软件:Win2000或WinXP、BC++、VC++或OpenGL开发环境。四、实验说明1.使用种子填充算法或扫描线填充算法填充任一多边形区域,多边形的顶点数和各顶点x,y坐标可由终端输入。对于种子填充算法要输入种子象素的x,y坐标。对于扫描线填充算法要输入扫描线间距。2.使用编码法裁剪二维线段或逐边裁剪算法裁剪多边形,并编程。输入裁剪窗口的四条边坐标。对于编码法裁剪二维线段要输入线段的起点与终点x,y坐标。对于逐边裁剪算法裁剪多边形要输入多边形的顶点数及各顶点x,y坐标。五、实验步骤1.设计要填充的图形;2.选择填充算法;3.编程实现并观察效果。有兴趣的同学可以对不同填充方法进行比较。4.选择裁剪算法;计算机科学与技术系计算机图形学实验指导书25.编程实现并观察效果。有兴趣的同学可以对不同填充方法进行比较。六、实验类型验证性实验。七、实验学时3学时。八、考核方式本实验总分为5分,具体评分标准如下:5分:实验准备充分,上机准时,能独立编写和调试程序,结果正确,实验报告内容齐全,格式规范。4分:实验准备良好,上机准时,能在教师指导下顺利编写和调试程序,结果较正确,实验报告内容比较齐全,格式比较规范。3分:实验准备较好,上机准时,基本完成实验任务,实验报告内容基本齐备,结果基本正确。2分:程序功能模块基本完整,但没有完成程序调试,无实验结果,提交了实验报告且有重大缺陷。1分:程序功能模块不完整,有重大问题,没有完成程序调试,无实验结果,提交的实验报告有重大缺陷。0分:没有参加实验,没有提交实验报告。九、思考题1.凸多边形和凹多边形在剪裁中会遇到什么不同的问题?2.多边形的图案填充应注意哪些问题?3.画笔软件中的填充采用的是什么方法?4.三维剪裁应考虑哪些问题?实验二:曲线和曲面的绘制一、实验目的1.了解曲线、曲面的性质、定义、表示方法及参数形式;计算机科学与技术系计算机图形学实验指导书32.理解插值和逼近样条的概念;3.掌握连续性条件;4.掌握Bezier及NURBS曲线、曲面生成方法。二、实验内容可选择下面任意一项完成。1.采用贝塞尔曲线、曲面绘制自行设计的图形;2.采用NURBS曲线、曲面绘制自行设计的图形。三、实验设备及工具1.硬件:PC机Pentium100以上。2.软件:Win2000或WinXP、BC++、VC++或OpenGL开发环境。四、实验提示本次实验是设计性实验,可综合运用所学知识,把实验内容当成产品设计,注意曲线和曲面的光滑连续,可考虑光照和着色。五、实验要求1.设计要求绘制n次Bezier曲线时,应可以输入控制点个数及控制点x,y坐标,输入数据可以放到文本文件中,以便调试。对于三次Bezier曲线,用多个曲线段拼接而成,并且要求曲线一阶导数连续。绘制Bezier曲面时,应可以输入控制多面体的顶点坐标与曲线的间距。绘制NURBS曲线时,应可以输入控制曲线顶点坐标及权因子;绘制NURBS曲面时,可以输入控制曲面的顶点坐标与权因子。2.关于设计性报告的书写:(1)请在实验报告中写明实验内容和要求,详细阐述解决问题的思路和方法;(2)分析有哪些可选方案,采用目前方案的原因和理由;(3)讲明选择了哪种语言进行设计,其优势在哪里;(4)若对算法有所改进或思考,也请加以阐述;(5)解释在程序设计中采用的哪种数据结构,其优点是什么?计算机科学与技术系计算机图形学实验指导书4(6)较详细地画出流程图,对程序代码加以注释;(7)对实验结果进行分析,对存在问题提出改进思路。六、实验类型设计性实验。七、实验学时3学时。八、考核方式本实验总分为5分,具体评分标准如下:5分:实验准备充分,上机准时,能独立编写和调试程序,结果正确,实验报告内容齐全,格式规范。4分:实验准备良好,上机准时,能在教师指导下顺利编写和调试程序,结果较正确,实验报告内容比较齐全,格式比较规范。3分:实验准备较好,上机准时,基本完成实验任务,实验报告内容基本齐备,结果基本正确。2分:程序功能模块基本完整,但没有完成程序调试,无实验结果,提交了实验报告且有重大缺陷。1分:程序功能模块不完整,有重大问题,没有完成程序调试,无实验结果,提交的实验报告有重大缺陷。0分:没有参加实验,没有提交实验报告。实验三:真实感图形绘制一、实验目的掌握建模、变换、消隐、光照、纹理等绘制模拟真实世界的景物方法和技术。二、实验内容绘制含有直线段、圆或圆弧的图形,编写生成该图形的源程序,并对该图形进行平移、比例、旋转等几何变换。计算机科学与技术系计算机图形学实验指导书5三、实验设备及工具1.硬件:PC机Pentium100以上。2.软件:Win2000或WinXP、OpenGL开发环境。四、实验说明自行设计简单景物模型,建立形体的参数模型。采用图形的几何变换方法将所定义物体的投影图绘制出来,然后进行消隐处理。再着以光照和纹理技术,表现其真实感效果。五、实验步骤1.设计景物的结构形状,建立合理的参数模型;2.对图形进行几何变换,变换参数可以固定也可以设计成可调;3.建立合理的消隐算法模型;4.选择材质,进行纹理映射,加入光照模型;5.全方位展示构图效果。六、实验类型综合性实验。七、实验学时3学时。八、考核方式本实验总分为5分,具体评分标准如下:5分:实验准备充分,上机准时,能独立编写和调试程序,结果正确,实验报告内容齐全,格式规范。4分:实验准备良好,上机准时,能在教师指导下顺利编写和调试程序,结果较正确,实验报告内容比较齐全,格式比较规范。3分:实验准备较好,上机准时,基本完成实验任务,实验报告内容基本齐备,结果基本正确。2分:程序功能模块基本完整,但没有完成程序调试,无实验结果,提交了实验报告且有重大缺陷。计算机科学与技术系计算机图形学实验指导书61分:程序功能模块不完整,有重大问题,没有完成程序调试,无实验结果,提交的实验报告有重大缺陷。0分:没有参加实验,没有提交实验报告。九、思考题1.所采用的建模方法的优劣?提出改进思路。2.介绍所采用的投影和消隐方法,提出改进设想。3.介绍所采用的纹理和光照模型,提出改进设想。计算机科学与技术系计算机图形学实验指导书7附录BorlandC++图形(BGI)函数简介在BorlandC++系统中,显示模式分为文本模式和图形模式两种。当显示图形时,必须驱动图形模式。所有图形函数存放在“Graphics.lib”库文件中,所有函数的原型在头文件“Graphics.h”中定义。下面把图形函数库中常用函数的原型作简单介绍。1.图形初始化原型:Voidinitgraph(intdriver,intmode,char*path)功能:装入驱动程序,设定系统的图形模式。参数:int*driver,指定驱动程序的明称。通常选择宏DETECT,表示自动检测。int*mode,用于保存参数的返回值。char*path,指定驱动程序的目录路径。2.关闭图形系统原型:Voidclosegraph(Void)3.设置当前画线颜色原型:voidfarsetcolor(intcolor)参数:intcolor,当前颜色值。0:黑色,1:兰色,2:绿色,3:青兰色,4:红色,5:洋红色,6:棕色,7:淡灰色,8:深灰色,14:黄色,15:白色4.两点画线(当前色)原型:voidfarline(intx1,inty1,intx2,inty2)参数:x1,y1:起点的坐标值,x2,y2:终点的坐标值。5.从当前点画相对距离点的直线原型:voidfarlinerel(intdx,intdy)参数:intdx,intdy:x和y方向上的距离,是相对于当前点。6.绝对距离画线原型:voidfarlineto(intx,inty)参数:x,y:目标点的坐标值。7.绝对坐标移动原型:voidfarmoveto(intx,inty)参数:x,y:目标点的坐标值。8.相对坐标移动原型:voidfarmoverel(intdx,intdy)参数:intdx,intdy:x和y方向上的距离,是相对于当前点。9.画整圆原型:voidfarcircle(intx,inty,intradius)计算机科学与技术系计算机图形学实验指导书810.画圆弧原型:voidfararc(intx,inty,intsta,intenda,intradius)参数:intsta,intenda:表示圆弧的起始角和终止角,单位:度。11.获取当前画线颜色原型:intfargetcilor(void)返回值:当前的颜色值。12.清除图形屏幕原型:voidfarcleardevice(vid)功能:清除整个屏幕,将CP移到(0,0)。13.例程:#includegraphics.hincludestalib.hincludestdio.hincludeconio.hintmain(void){intgdriver=DETECT,gmode;initgraph(&gdiver,&gmode,”C:\\BC31\\BGI”);//进行图形初始化,图形卡的采用自动检//测模式,同时假设BC系统安装在C盘的BC31子目录下。setcolor(4);//设定当前前景色为红色circle(300,300,100);//以点(300,300)为圆心,100为半径画圆周。setcolor(2);//设定当前前景色为绿色line(100,100,100,600);//在点(100,100)和点(100,600)之间画一条直线段line(100,500,500,500);//这四条线段构成长为500宽为400的矩形。line(500,500,500,100);line(500,100,100,100);getch();//暂停,供操作者观察图形。closegrap();//关闭图形模式。}