《计算机图形学》课程实验指导(1)全解

合集下载

计算机图形学实验指导书(vc++版)

计算机图形学实验指导书(vc++版)

实验指导书刘文涛2013目录第一章图形学实验环境和要求 (4)1.1 VC++实验环境 (4)1.1.1 基本环境 (4)1.1.1 开发图形程序的一般流程 (7)1.1.3 基本绘图函数介绍 (11)1.2 OpenGL (22)1.2.1 OpenGL介绍 (22)1.2.2 OpenGL开发环境 (24)1.2.3 OpenGL函数 (24)1.2.4 回调函数 (25)1.2.4 一个典型OpenGL例程 (26)1.3 实验要求 (29)1.3.1 实验内容 (29)1.3.2 实验方法 (29)1.3.3 实验效果 (30)第二章直线生成算法 (30)2.1 实验原理 (30)2.1.1 DDA算法 (30)2.1.2 Bresenham算法 (30)2.2 实验内容 (30)2.3 参考示例程序 (30)第三章圆和椭圆生成算法 (32)3.1 实验原理 (32)3.2 实验内容 (32)3.3 参考示例程序1 (32)3.4 参考示例程序2 (33)第四章裁剪算法 (35)4.1 实验原理 (35)4.2 实验内容 (35)4.3 示例程序 (35)4.3.1 参考例子1 (35)4.3.2参考例子2 (38)第五章二维变换 (40)5.1 实验原理 (40)5.2 实验内容 (40)5.3 示例程序 (40)5.3.1参考例子1 (40)第六章三维变换 (44)6.1 实验原理: (44)6.2 实验内容 (45)6.3示例程序 (45)第七章填充算法 (47)7.1 实验原理: (47)7.2 实验内容 (47)7.3示例程序 (47)第八章曲线曲面 (50)8.1 实验原理 (50)8.2 实验内容 (50)8.3示例程序 (51)8.3.1 参考例子(1) (51)8.3.2 参考例子(2) (52)8.3.3 参考例子(3) (54)8.3.4 参考例子(4) (56)第九章真实感图形绘制 (59)9.1 实验原理 (59)9.2 实验内容 (59)9.3示例程序 (59)9.3.1参考例子(1) (59)9.3.2参考例子(2) (61)9.3.3参考例子(3) (63)第十章动画 (66)10.1 实验原理 (66)10.2 实验内容 (66)10.3示例程序 (66)10.3.1 参考例子 (66)参考文献: (72)第一章图形学实验基础1.1 VC++实验环境1.1.1 基本环境Microsoft Visual C++ 6.0 是微软推出的功能强大的可视化C/C++语言编译器,运行在Windows 9x/2000/NT等平台上,可以建立32位应用程序。

《计算机图形学》课程实验指导(1)全解

《计算机图形学》课程实验指导(1)全解

《计算机图形学》课程实验指导一.实验总体方案1.教学目标与基本要求(1)掌握教材所介绍的图形算法的原理;(2)掌握通过具体的平台实现图形算法的方法,培养相应能力;(3)通过实验培养具有开发一个基本图形软件包的能力。

2. 实验平台与考核实验主要结合OpenGL设计程序实现各种课堂教学中讲过的图形算法为主。

程序设计语言主要以C/C++语言为主,开发平台为Visual C++。

每次实验前完成实验报告的实验目的、实验内容、实验原理、实验代码四部分并接受抽查,实验完成后完成实验结果、实验体会两部分,本次实验课结束前提交。

3. 实验步骤(1) 预习教材与实验指导相关的算法理论及原理;(2) 仿照教材与实验指导提供的算法,利用VC+OpenGL进行实现;(3) 调试、编译、运行程序,运行通过后,可考虑对程序进行修改或改进。

二. 实验具体方案实验预备知识OpenGL作为当前主流的图形API之一,它在一些场合具有比DirectX更优越的特性。

1)与C语言紧密结合:OpenGL命令最初就是用C语言函数来进行描述的,对于学习过C语言的人来讲,OpenGL是容易理解和学习的。

如果你曾经接触过TC的graphics.h,你会发现,使用OpenGL 作图甚至比TC更加简单;2)强大的可移植性:微软的Direct3D虽然也是十分优秀的图形API,但它只用于Windows系统。

而OpenGL 不仅用于 Windows,还可以用于Unix/Linux等其它系统,它甚至在大型计算机、各种专业计算机(如:医疗用显示设备)上都有应用。

并且,OpenGL 的基本命令都做到了硬件无关,甚至是平台无关;3) 高性能的图形渲染:OpenGL是一个工业标准,它的技术紧跟时代,现今各个显卡厂家无一不对OpenGL提供强力支持,激烈的竞争中使得OpenGL性能一直领先。

总之,OpenGL是一个非常优秀的图形软件接口。

OpenGL官方网站(英文)下面将对Windows下的OpenGL编程进行简单介绍。

《计算机图形学》实验指导书

《计算机图形学》实验指导书

计算机图形学实验指导书袁科计算机技术实验中心目录实验一实现DDA、中点画线算法和Bresenham画线算法 (24)实验二实现Bezier曲线 (25)实验三实现B样条曲线 (26)实验四实现多边形填充的边界标志算法 (27)实验五实现裁剪多边形的Cohen-Sutherland算法 (28)实验六二维图形的基本几何变换 (30)实验七画图软件的编制 (31)实验一实现DDA、中点画线算法和Bresenham画线算法【实验目的】1、掌握直线的多种生成算法;2、掌握二维图形显示原理。

【实验环境】VC++6.0/ BC【实验性质及学时】验证性实验,2学时,必做实验【实验内容】利用任意的一个实验环境,编制源程序,分别实现直线的三种生成算法,即数字微分法(DDA)、中点画线法以及Bresenham画线算法。

【实验原理】1、数字微分法(Digital Differential Analyzer,DDA)算法思想:基于直线的微分方程来生成直线。

ε=1/max(|△x|,|△y|)max(|△x|,|△y|)=|△x|,即|k|≤1 的情况:max(|△x|,|△y|)=|△y|,此时|k|≥1:2、中点画线法算法思想:每次在最大位移方向上走一步,另一方向是否走步取决于误差项的判断。

3、Bresenham画线算法算法思想:其基本思想同中点算法一样,即每次在最大位移方向上走一步,而另一个方向是否走步取决于误差项的判断。

【实验要求】1.上交源程序;2.上交实验报告,实验报告内容如下:(1) 实验名称(2) 实验目的(3) 算法实现的设计方法及程序流程图(4) 程序结果分析【分析与思考】(1) 上述所阐述的三个算法,其基本算法只能适用于直线的斜率(|K|<=1) 的情形,如何将上述算法进行推广,使其能够处理任意斜率的直线?(2) 计算机显示屏幕的坐标圆心在哪里,与我们平时的习惯有什么差异,如何协调二者?实验二 实现Bezier 曲线【实验目的】1、掌握Bezier 曲线的定义;2、能编程实现N 次Bezier 曲线的绘制与显示。

计算机图形学实验指导书2011

计算机图形学实验指导书2011

《计算机图形学》实验指导书主讲:宋春花教材:计算机图形学适应专业:软件工程总学时:40学时实验学时:102011-5-20前言随着计算机科学与技术的迅猛发展,特别是大规模集成电路和超大规模集成电路技术的飞速发展,计算机已经成为一种高速、费用低的生成图形的有效工具。

计算机图形学作为利用计算机生成图形的技术,已经越来越广泛地在各个领域得到应用。

随着计算机图形学应用领域的拓宽和应用水平的提高,人们越来越重视对该项技术的研究和利用。

当今,计算机图形学已经成为了计算机科学技术领域的一个重要研究方向,并被广泛的应用于科学计算、工程设计、医药、工业、艺术、娱乐业、广告业、教育与培训、商业和政府部门等。

鉴于计算机图形学的重要性和应用的广泛性,计算机科学与技术专业将其设置为专业必选的选修课。

它主要是研究用计算机及其图形设备来输入、表示、变换、运算和输出图形的原理、算法及系统。

通过对本课程的学习,使学生对计算机图形学有一个完整的了解,并为进行计算机图形学应用和研究打下扎实基础。

由于本课程实践性较强,计划中安排10学时实验。

通过实验,使学生更加深入的理解计算机图形系统的工作机理和基本图形生成和处理算法。

在实验过程中,能够培养学生的自学能力、团队协作能力、解决问题能力、软件开发能力等多种能力。

培养学生的算法设计能力和编程能力,能够应用计算机来解决在科学研究、工程设计与制造中有关图形处理的能力;在图形学理论与算法方面的科研能力;应用高级绘图软件及对其进行二次开发的能力,并具有开发大型通用或专用绘图软件的能力。

为学生毕业设计、和毕业后从事计算机绘图、计算机辅助设计、图形生成、图像处理等打下基础。

培养学生的算法设计能力和编程能力,1目录一、实验目的和要求 ........................................ 错误!未定义书签。

二、实验环境..................................................... 错误!未定义书签。

计算机图形学实验指导书

计算机图形学实验指导书
hwndcreatewindowlpctstripszclassnamelpctstripsztitle窗口标题名dworddwstyle创建窗口的样式窗口宽度和度高该窗口的父窗口句柄窗口主菜单句柄创建窗口的应用程序当前彳u柄指向一个传递给窗口的参数值的指针常用窗口样式说明wsborder售健一带边框的窗口ws创建一带标题栏的窗口wsjvscroll健一带垂直滚动条的窗口wsmaximizebox创健一带量大化框的窗口wsmaximize仓健一最大尺寸的窗口wsminimizebox创建一带量小化框的窗口wsminimize包健一最小尺寸的窗口wsoverlapped色健一带边框和标题的窗口wsoverlappewindow健一带边框
2
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力通根1保据过护生管高产线中工敷资艺设料高技试中术卷0资配不料置仅试技可卷术以要是解求指决,机吊对组顶电在层气进配设行置备继不进电规行保范空护高载高中与中资带资料负料试荷试卷下卷问高总题中2体2资配,料置而试时且卷,可调需保控要障试在各验最类;大管对限路设度习备内题进来到行确位调保。整机在使组管其高路在中敷正资设常料过工试程况1卷下中安与,全过要,度加并工强且作看尽下护可1都能关可地于以缩管正小路常故高工障中作高资;中料对资试于料卷继试连电卷接保破管护坏口进范处行围理整,高核或中对者资定对料值某试,些卷审异弯核常扁与高度校中固对资定图料盒纸试位,卷置编.工写保况复护进杂层行设防自备腐动与跨处装接理置地,高线尤中弯其资曲要料半避试径免卷标错调高误试等高方,中案要资,求料编技试5写术卷、重交保电要底护气设。装设备管置备4高线动调、中敷作试电资设,高气料技并中课3试术且资件、卷中拒料中管试包绝试调路验含动卷试敷方线作技设案槽,术技以、来术及管避系架免统等不启多必动项要方高案式中;,资对为料整解试套决卷启高突动中然过语停程文机中电。高气因中课此资件,料中电试管力卷壁高电薄中气、资设接料备口试进不卷行严保调等护试问装工题置作,调并合试且理技进利术行用,过管要关线求运敷电行设力高技保中术护资。装料线置试缆做卷敷到技设准术原确指则灵导:活。在。对分对于线于调盒差试处动过,保程当护中不装高同置中电高资压中料回资试路料卷交试技叉卷术时调问,试题应技,采术作用是为金指调属发试隔电人板机员进一,行变需隔压要开器在处组事理在前;发掌同生握一内图线部纸槽故资内障料,时、强,设电需备回要制路进造须行厂同外家时部出切电具断源高习高中题中资电资料源料试,试卷线卷试缆切验敷除报设从告完而与毕采相,用关要高技进中术行资资检料料查试,和卷并检主且测要了处保解理护现。装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

计算机图形学实验(全)

计算机图形学实验(全)

实验1 直线的绘制实验目的1、通过实验,进一步理解和掌握DDA和Bresenham算法;2、掌握以上算法生成直线段的基本过程;3、通过编程,会在TC环境下完成用DDA或中点算法实现直线段的绘制。

实验环境计算机、Turbo C或其他C语言程序设计环境实验学时2学时,必做实验。

实验内容用DDA算法或Besenham算法实现斜率k在0和1之间的直线段的绘制。

实验步骤1、算法、原理清晰,有详细的设计步骤;2、依据算法、步骤或程序流程图,用C语言编写源程序;3、编辑源程序并进行调试;4、进行运行测试,并结合情况进行调整;5、对运行结果进行保存与分析;6、把源程序以文件的形式提交;7、按格式书写实验报告。

实验代码:DDA:# include <graphics.h># include <math.h>void DDALine(int x0,int y0,int x1,int y1,int color){int dx,dy,epsl,k;float x,y,xIncre,yIncre;dx=x1-x0;dy=y1-y0;x=x0;y=y0;if(abs(dx)>abs(dy))epsl=abs(dx);elseepsl=abs(dy);xIncre=(float)dx/(float)epsl;yIncre=(float)dy/(float)epsl;for(k=0;k<=epsl;k++){putpixel((int)(x+0.5),(int)(y+0.5),4);x+=xIncre;y+=yIncre;}}main(){int gdriver ,gmode ;gdriver = DETECT;initgraph(&gdriver , &gmode ,"C:\\TC20\\BGI");DDALine(0,0,35,26,4);getch ( );closegraph ( );}Bresenham:#include<graphics.h>#include<math.h>void BresenhamLine(int x0,int y0,int x1,int y1,int color) {int x,y,dx,dy,e;dx=x1-x0;dy=y1-y0;e=-dx;x=x0;y=y0;while(x<=x1){putpixel(x,y,color);x++;e=e+2*dy;if(e>0){y++;e=e-2*dx;}}}main(){int gdriver ,gmode ;gdriver = DETECT;initgraph(&gdriver , &gmode ,"c:\\TC20\\BGI");BresenhamLine(0, 0 , 120, 200,5 );getch ( );closegraph ( );}实验2 圆和椭圆的绘制实验目的1、通过实验,进一步理解和掌握中点算法;2、掌握以上算法生成椭圆或圆的基本过程;3、通过编程,会在TC环境下完成用中点算法实现椭圆或圆的绘制。

计算机图形学实验指导1+2

计算机图形学实验指导1+2

实验一、熟悉Windows图形开发环境使用Visual C++在Windows下进行图形程序设计的基本步骤是:(1)在绘制之前,创建绘图工具并设置相关的颜色、线型、线宽等属性;(2)调用相关的绘图函数选择绘图工具并进行绘图;(3)在绘制之后,恢复原有的绘图工具。

举例如下:void CMyView::OnDraw(CDC* pDC){//使用缺省画笔画了一条直线,画笔的属性是实线型、1个像素宽、黑色pDC->MoveTo (100,100);pDC->LineTo (200,200);CPen *pOldPen; //申请一个画笔指针,用于保存当前设备环境下的画笔CPen dashPen; //以下创建画笔并绘制直线//创建一个画笔,其属性是虚线型、1个像素宽、红色dashPen.CreatePen (PS_DASH,1, RGB(255,0,0));pOldPen=pDC->SelectObject (&dashPen); //选择新建画笔,用pOldPen保留原画笔pDC->LineTo(300,100); //使用新画笔绘制直线pDC->SelectObject (pOldPen); //绘制完毕一定要恢复原画笔pDC->LineTo (400,200); //再次使用原画笔再绘制直线}实验二、创建VC6.0下 OpenGL绘图程序的基本框架新建工程,在工程—设置—链接—L对象库模版中添加OPENGL库,即opengl32.lib glu32.lib glaux.lib如图所示:在Visual C++中,修改视图类成员函数代码实现OpenGL绘图的过程如下:①在(文件名.view)视图类中改造PreCreateWindow函数:将窗口的客户区设置为OpenGL能够支持的风格。

具体添加代码如下:cs.style|=WS_CLIPCHILDREN|WS_CLIPSIBLINGS;②在工具栏的视图——类向导中添加并改造OnCreate函数:定义像素存储格式,并创建一个OpenGL操作所必须的绘图上下文RC(Rendering Context)。

《计算机图形学》实验指导书(正式版)

《计算机图形学》实验指导书(正式版)

《计算机图形学》实验指导谢晓玲华东理工大学信息学院计算机系2010年8月目录实验1 OpenGL应用的创建 (2)实验2 橡皮筋技术的实现 (17)实验3 基本变换 (24)实验4 拾取 (41)实验5 三维观察的实现 (54)实验1 OpenGL应用的创建一、实验目的1、了解C++.NET开发基于窗口技术的应用程序的步骤;2、了解OpenGL绘图的步骤;3、显示一个三角形图形。

二、使用的工具软件及环境C++.NET、OpenGL三、实验内容1、构造一个单文档的Windows应用程序2、定义一个填充图案;3、通过菜单,交互控制填充开关;4、显示一个填充的三角形图形。

四、实验指导1、基本要素(1)C++.NET程序设计框架C++.NET提供了一套应用程序框架,应用程序框架是指用于生成一般的应用程序所必须的各种面向对象的软件组建的集合。

C++程序设计的特点之一就是大量使用类库来进行功能扩展。

类库是一个可以在应用程序中使用的相互关联的C++类的集合。

一些类库是随编译器一起提供的,一些是由其他软件公司销售的,还有一些是由用户自己开发的。

应用程序框架是一种类库的超集,它用来定义程序的结构,将其他的类库,例如文档类、视图类及用户自定义类等,嵌入到应用程序框架中,以完成用户预期的功能。

通过定制,C++.NET 可以自动生成一套程序代码,以单文档多视风格的应用程序为例,自动生成的源代码主要包含应用程序类、主框架类、文档类、视口类。

以MyDemo为工程名,C++.NET自动生成的类如下:A.class CMyDemoApp: public CWinAppCMyDemoApp的对象就代表了一个应用程序。

该程序定义了一个单独的全局CMyApp对象theApp:CMyDemoApp theApp;其基类决定了theApp的行为,包括程序的启动、初始化和运行等。

B.class CMainFrame : public CFrameWnd它代表了应用程序的主框架窗口,它负责创建和显示具体的窗口结构,并负责消息的分发。

计算机图形学划线实验报告

计算机图形学划线实验报告

计算机图形学划线实验报告《计算机图形学》实验报告实验⼀直线、圆(弧)⽣成算法⼀、实验⽬的及要求1. 了解光栅图形显⽰器的⼯作原理和特点;2. 学习C/VC环境下的基本绘图⽅法;3. 实践与巩固直线的基本⽣成算法。

4. 掌握直线扫描转换算法的原理及实现;5. 学习圆(弧)的基本⽣成算法;6. 实践圆(弧)的基本⽣成算法;7. 掌握圆弧扫描转换算法的原理及实现;⼆、理论基础1、有关直线⽣成算法有DDA(数值微分)、中点画线线算法、Bresenham⽣成算法数值微分法先算出直线的斜率,然后从起点开始,确定最佳逼近于直线的y坐标。

假设起点的坐标为整数。

让x递增1,y相应递增k。

中点划线算法中若直线在x⽅向增加⼀个单位,y的增量只能在0、1之间。

假设当前像素点已经确定,下⼀像素点就只可能有两种情况,将这两点的中点带⼊直线⽅程中,通过中点在直线的上、下⽅来判断下⼀点的坐标。

Bresenham算法是通过各⾏、各列像素中⼼构造⼀组虚拟⽹络格线,按直线从起点到中点的顺序计算直线与各垂直⽹格线的交点,然后确定该列像素中与此交点最近的像素。

2、有关画圆的算法圆的扫描转换(中点画圆法)、Bresenham画圆算法圆的扫描转换算法同中点画线类似,将圆分为8份,先讨论圆的第⼀象限上半部分,从(0,R)点顺时针确定最佳逼近于该圆弧的像素序列。

之后通过对称画出全部圆。

Bresenham画圆算法考虑圆在第⼀象限上的点,每确定⼀像素,则下⼀像素有三种可能,通过判断右下⽅的像素与圆的位置关系再分为三种情况,之后通过这三个点与圆的距离远近确定最佳逼近像素。

三、算法设计与分析1、数值微分法int x0=0,y0=0,x1=800,y1=400; //数值微分法,|k|<=1float dx,dy,k,x,y;dx=x1-x0;dy=y1-y0;k=dy/dx;y=y0;for(x=x0;x<=x1;x++){pDC->SetPixel(x,int(y+0.5),color);y=y+k;}该程序中每⼀步的x、y值是⽤前⼀步的值加上⼀个增量来获得的。

《计算机图形学》实验指导书

《计算机图形学》实验指导书

《计算机图形学》实验指导书实验一:二维基本图元的生成1、实验目的:参照Windows的画笔或Office中的绘图模块设计学会自己编程实现二维基本图元的生成。

实现二维基本图元直线段生成的DDA算法,中点算法、Bresenham算法。

2、实验内容:用数值微分DDA算法、中点算法、Bresenham算法扫描转换直线段(20,10)--(30,18)3、实验要求:1)写出扫描转换的结果2)写出每一步递推过程的x,y坐标及判别式d的值3)图示计算结果4)考虑实现环境、编程语言和设计界面风格5)用菜单或按钮调用方式实现每个基本算法6)考虑界面的美观,扩展,人机交互等因素7)调试程序,验证算法的正确性8)提交实验报告4、参考:教材,开发平台的联机帮助。

演示参考:DDA算法:斜率k=(5-1)/(5-0)=0.8x y y+0.5 int(y+0.5)0 1 1.5 11 1.8 2.3 22 2.6 3.1 33 3.4 3.9 34 4.2 4.7 45 5.0 5.5 5中点算法:a=y0-y1=-4;b=x1-x0=5; d0=2a+b=-3; d1=2a=-8; d2=2(a + b) =2;x y d 说明0 1 -31 2 -1; d<0, d+d22 3 1; d<0, d+d23 3 -7; d>0, d+d14 4 -5; d<0, d+d25 5 -3; d<0, d+d2 结果图示:实验二:写一个画带线宽的程序。

1、实验目的:参照Windows的画笔或Office中的绘图模块设计学会自己编程实现二维基本图元的生成2、实验内容:实现对线宽的属性的控制3、实验步骤:1)考虑实现环境、编程语言和设计界面风格2)调用菜单或按钮调用方式实现每个基本算法3)考虑界面的美观,扩展,人机交互等因素4)键盘输入直线的两个端点坐标及线宽的倍数,调用算法实现5)调试程序,验证算法的正确性6)提交实验报告4、参考:教材,开发平台的联机帮助。

计算机图形学实验指导书

计算机图形学实验指导书

计算机图形学实验指导书王飞北京邮电大学机电工程实验教学中心2007.9实验一 直线的Bresenham算法一、实验目的深入理解直线的Bresenham算法,学习图形的编程方法二、实验设备微机三、实验内容实现直线的Bresenham算法并画出一个几何图形四、实验步骤1.安装VB或VC软件2.了解软件的使用3.键入程序代码4.调试五、实验报告要求1.推出直线的Bresenham算法2.画出程序框图3.写出程序代码4.写出程序调试时出现的问题和解决办法实验二 图形的二维变换一、实验目的深入理解图形的各种基本变换和组合变换及其实现方法,学习图形的编程方法。

二、实验设备微机三、实验内容参照图1或图2自己设计一个图案并上机编程实现图1 图2四、实验步骤1.了解编程软件的使用方法2.键入程序代码3.调试程序五、实验报告要求1.导出变换矩阵2.写出实现思路并画出程序框图3.给出程序代码4.写出程序调试时出现的问题和解决办法实验三 投影变换一、实验目的深入理解各种投影变换的方法,特别是透视变换的方法。

学习图形的编程方法。

二、实验设备微机三、实验内容实现组合体的三视图和轴测投影变换或透视投影变换四、实验步骤1.继续了解编程软件的使用方法2.键入程序代码3.调试程序五、实验报告要求1.推出各种变换矩阵算法2.画出程序框图3.给出程序代码4.写出程序调试时出现的问题和解决办法实验四 自由型曲线(一)一、实验目的深入理解构造弗格森曲线和参数三次样条曲线的方法,学习图形的编程方法。

二、实验设备微机三、实验内容参考图3或图4自己设计一个外形,用弗格森曲线或参数三次样条曲线构造并上机实现。

四、实验步骤1.继续了解编程软件的使用方法2.键入程序代码3.调试程序五、实验报告要求1.给出构造弗格森曲线和参数三次样条曲线的方法2.画出程序框图3.给出出程序代码4.写出程序调试时出现的问题和解决办法实验五 自由型曲线(二)一、实验目的深入理解贝齐尔曲线和B样条曲线方法,学习图形的编程方法。

《计算机图形学》实验指导书2016

《计算机图形学》实验指导书2016

掌握用计算机生成、处理、显示图形的 基本原理、方法
1.3.3 掌握地图学与 地理信息系统的基本 理论与知识
了解 GIS 数据中,矢量数据展现的基本方 式及变换的基本原理
了解三维地理信息系统研究的内容
1.4.5 熟悉地理信息 系统开发工具,具备 一定的 GIS 开发的能 力
能够编写简单的 GIS 图形生成、可视化程 序
2
2.4 实验报告要求............................................... 36 2.5 其它说明................................................... 36 实验三、图形的几何变换............................................. 37 3.1 实验目的................................................... 37 3.2 实验任务及其基本原理.......................................37
1
2
生成
法生成直线
设计
1 课内完成
图 形 填 充 使用扫描线填充算法,编程实现多边
2
2
算法
形的填充
设计
1 课内完成
使用多边形逐边裁剪算法,编程实现
3 图形裁剪
2
对多边形的裁剪
设计
1 课外完成
图 形 的 几 编程实现对多边形的平移、旋转、变
4
2
何变换 比变换
设计
1 课内完成
5 造型技术 通过造型软件或系统了解几何造型
三、课程培养标准
通过学习,使用学生了解计算机图形学的应用和研究热点,掌握计算机图 形学的基本概念,掌握计算机生成、处理、显示图形的基本原理、方法以,为 进一步学习 GIS 相关课程打下基础。本课程具体完成培养方案中以下指标:

计算机图形学课程实验指导书

计算机图形学课程实验指导书

前言本课程的基本内容介绍,通过学习学生需要掌握的基本知识。

为了使学生更好地理解和深刻地把握这些知识,并在此基础上,训练和培养哪些方面的技能,设置的具体实验项目,其中哪几项实验为综合性、设计性实验。

各项实验主要了解、掌握的具体知识,训练及培养的技能。

本指导书的特点。

对不同专业选修情况说明。

实验:金刚石图案算法实验学时:2实验类型:(演示、验证√、综合、设计√、研究)实验要求:(必修、选修)一、实验目的通过本实验的学习,使学生掌握Visual C++ 6.0编程的基本步骤,熟悉MFC 绘图相关类和方法,进一步熟悉面向对象的程序设计方法,为进一步学习基本图元的绘制、图形几何变换等内容作好准备。

二、实验内容定义或输入半径和等分点个数,在一个以该半径为圆的圆周上求出每个等分点的坐标,然后所有等分点之间均用直线相连接,构成一个金刚石的图案。

一个可能的图案如下:三、实验原理、方法和手段1、可以设计成菜单方式,用对话框来设置半径和圆周上等分点的个数。

2、利用CDC类中的lineto函数来绘制直线。

四、实验组织运行要求学生自主训练为主的开放模式组织教学五、实验条件windows XP虚拟机和vc++6.0编程环境六、实验步骤由学生自行设计实验方案并加以实现的实验七、思考题考虑如何让屏幕得到刷新实验1:中点扫描转换实现实验学时:4实验类型:(演示、验证、综合、设计√、研究)实验要求:(必修√、选修)一、实验目的通过本实验的学习,使学生掌握Visual C++ 6.0编程的基本步骤,进一步熟悉面向对象的程序设计方法,掌握中点法绘制圆形的算法原理,理解与构造中点偏差判别式,并能通过CDC类的SetPixel方法来实现,为进一步学习基本图元的绘制、图形几何变换等内容作好准备。

二、实验内容1、输入直线的起点和终点坐标,在客户区中央绘制出该直线,如下图所示。

2、输入半径,则在客户区中央绘制出该半径的圆,如下图所示。

三、实验原理、方法和手段1、可以设计成菜单方式,用对话框来设置半径和圆周上等分点的个数。

《计算机图形学》实验指导书

《计算机图形学》实验指导书
2、能够根据实验指导书的要求,完成相关的内容;
3、务必掌握绘图程序的开发流程,为今后复杂的图形程序开发做好准备。
四、实验内容
(一)生成绘图应用程序的框架
开发绘图应用程序的第一步是使用AppWizard(程序生成向导)来建立程序的基本框架。AppWizard为框架的建立提供了一系列对话框及多种选项,用户可以根据不同的选项生成自己所需要的应用程序框架。具体步骤如下:
五、思考
1、如何实现圆心为任意位置的圆的绘制;
2、两种画圆算法的比较。
六、实验总结
湖北汽车工业学院实验报告
班级
学号
姓名
课程名称
完成日期
实验四 实现Bezier曲线的生成算法
一、实验目的
1、熟悉CDC图形程序库;
2、掌握Bezier曲线的生成算法;
3、掌握利用Bezier曲线生成复杂形状的曲线;
五、思考
1、MFC开发绘图程序时,工作窗口坐标系是怎么样的,坐标原点在哪儿?
2、实现任意斜率直线生成问题时,能不能使用模块化的思想,即将各个画线算法程序进一步分解,通过不同的函数来完成不同斜率的生成?
3、三种不同的直线生成算法的分析和比较。
六、实验总结
湖北汽车工业学院实验报告
班级
学号
姓名
课程名称
完成日期
pDC->SetPixel(-y+x0,x+y0,RGB(255,0,0));
pDC->SetPixel(-x+x0,y+y0,RGB(255,0,0));
}
}
2、利用Bresenham算法生成圆(算法的详细原理见教材)。
void CDraw_CirView::OnBre()
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《计算机图形学》课程实验指导一.实验总体方案1.教学目标与基本要求(1)掌握教材所介绍的图形算法的原理;(2)掌握通过具体的平台实现图形算法的方法,培养相应能力;(3)通过实验培养具有开发一个基本图形软件包的能力。

2. 实验平台与考核实验主要结合OpenGL设计程序实现各种课堂教学中讲过的图形算法为主。

程序设计语言主要以C/C++语言为主,开发平台为Visual C++。

每次实验前完成实验报告的实验目的、实验内容、实验原理、实验代码四部分并接受抽查,实验完成后完成实验结果、实验体会两部分,本次实验课结束前提交。

3. 实验步骤(1) 预习教材与实验指导相关的算法理论及原理;(2) 仿照教材与实验指导提供的算法,利用VC+OpenGL进行实现;(3) 调试、编译、运行程序,运行通过后,可考虑对程序进行修改或改进。

二. 实验具体方案实验预备知识OpenGL作为当前主流的图形API之一,它在一些场合具有比DirectX更优越的特性。

1)与C语言紧密结合:OpenGL命令最初就是用C语言函数来进行描述的,对于学习过C语言的人来讲,OpenGL是容易理解和学习的。

如果你曾经接触过TC的graphics.h,你会发现,使用OpenGL 作图甚至比TC更加简单;2)强大的可移植性:微软的Direct3D虽然也是十分优秀的图形API,但它只用于Windows系统。

而OpenGL 不仅用于 Windows,还可以用于Unix/Linux等其它系统,它甚至在大型计算机、各种专业计算机(如:医疗用显示设备)上都有应用。

并且,OpenGL 的基本命令都做到了硬件无关,甚至是平台无关;3) 高性能的图形渲染:OpenGL是一个工业标准,它的技术紧跟时代,现今各个显卡厂家无一不对OpenGL提供强力支持,激烈的竞争中使得OpenGL性能一直领先。

总之,OpenGL是一个非常优秀的图形软件接口。

OpenGL官方网站(英文)下面将对Windows下的OpenGL编程进行简单介绍。

如下是学习OpenGL前的准备工作:1.选择一个编译环境现在Windows系统的主流编译环境有Visual C++,C++ Builder,Dev-C++等,它们都是支持OpenGL的。

但这里我们选择Visual C++ 作为学习OpenGL的实验环境。

2.安装GLUT工具包GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装。

Windows环境下的GLUT下载地址:(大小约为150k)/resources/libraries/glut/glutdlls37beta.zipWindows环境下安装GLUT的步骤:1)将下载的压缩包解开,将得到5个文件2)在“我的电脑”中搜索“gl.h”,并找到其所在文件夹(如果是VisualStudio2005,则应该是其安装目录下面的“VC\PlatformSDK\include\gl文件夹”)。

把解压得到的glut.h放到这个文件夹。

3)把解压得到的glut.lib和glut32.lib放到静态函数库所在文件夹(如果是VisualStudio2005,则应该是其安装目录下面的“VC\lib”文件夹)。

4)把解压得到的glut.dll和glut32.dll放到操作系统目录下面的system32文件夹内。

(典型的位置为:C:\Windows\System32)3.建立一个OpenGL工程这里以VC为例:选择File->New->Project,然后选择Win32 Console Application,选择一个名字,然后按OK。

在谈出的对话框左边点Application Settings,找到Empty project并勾上,选择Finish。

然后向该工程添加一个代码文件,取名为“OpenGL.cpp”。

实验1 像素点的生成1.实验目的:熟悉编程环境;了解光栅图形显示器的特点;了解计算机绘图的特点;利用VC+OpenGL 作为开发平台设计程序,以能够在屏幕上生成任意一个像素点为本实验的结束。

2.实验内容:(1)了解和使用VC的开发环境,理解简单的OpenGL程序结构。

(2)掌握OpenGL提供的基本图形函数,尤其是生成点的函数。

3.实验原理:(1)基本语法常用的程序设计语言,如C、C++、Pascal、Fortran和Java等,都支持OpenGL的开发。

这里只讨论C版本下OpenGL的语法。

OpenGL基本函数均使用gl作为函数名的前缀,如glClearColor();实用函数则使用glu 作为函数名的前缀,如gluSphere()。

OpenGL基本常量的名字以GL_开头,如GL_LINE_LOOP;实用常量的名字以GLU_开头,如GLU_FILL。

一些函数如glColor*()(定义颜色值),函数名后可以接不同的后缀以支持不同的数据类型和格式。

如glColor3b(...)、glColor3d(...)、glColor3f(...)和glColor3bv(...)等,这几个函数在功能上是相似的,只是适用于不同的数据类型和格式,其中3表示该函数带有三个参数,b、d、f分别表示参数的类型是字节型、双精度浮点型和单精度浮点型,v则表示这些参数是以向量形式出现的。

OpenGL定义了一些特殊标识符,如GLfloat,GLvoid。

它们其实就是C中的float和void。

在gl.h文件中可以看到以下定义:……typedef float GLfloat; typedef void GLvoid; ……一些基本的数据类型都有类似的定义项。

(2)程序的基本结构OpenGL程序的基本结构可分为三个部分:第一部分是初始化部分。

主要是设置一些OpenGL的状态开关,如颜色模式(RGBA或ALPHA)的选择,是否作光照处理(若有的话,还需设置光源的特性),深度检验,裁剪等等。

这些状态一般都用函数glEnable(...), glDisable(…)来设置,…表示特定的状态。

第二部分设置观察坐标系下的取景模式和取景框位置大小。

主要利用了三个函数:函数void glViewport(left,top,right,bottom):设置在屏幕上的窗口大小,四个参数描述屏幕窗口四个角上的坐标(以象素表示)函数void glOrtho(left,right,bottom,top,near,far):设置投影方式为正交投影(平行投影),其取景体积是一个各面均为矩形的六面体;函数void gluPerspective(fovy,aspect,zNear,zFar):设置投影方式为透视投影,其取景体积是一个截头锥体。

第三部分是OpenGL的主要部分,使用OpenGL的库函数构造几何物体对象的数学描述,包括点线面的位置和拓扑关系、几何变换、光照处理等等。

以上三个部分是OpenGL程序的基本框架,即使移植到使用MFC的Windows程序中,也是如此。

只是由于Windows自身有一套显示方式,需要进行一些必要的改动以协调这两种不同显示方式。

(3)状态机制OpenGL的工作方式是一种状态机制,它可以进行各种状态或模式设置,这些状态或模式在重新改变它们之前一直有效。

例如,当前颜色就是一个状态变量,在这个状态改变之前,绘制的每个象素都将使用该颜色,直到当前颜色被设置为其它颜色为止。

OpenGL中大量地使用了这种状态机制,如颜色模式、投影模式、单双显示缓存区的设置、背景色的设置、光源的位置和特性等等。

许多状态变量可以通过glEnable()、glDisable()这两个函数来设置成有效或无效状态,如是否设置光照、是否进行深度检测等;在被设置成有效状态之后,绝大部分状态变量都有一个缺省值。

通常情况下,可以用下列四个函数来获取某个状态变量的值:glGetBooleanv()、glGetDouble()、glGetFloatv()和glGetIntegerv()。

究竟选择哪个函数应该根据所要获得的返回值的数据类型来决定。

还有些状态变量有特殊的查询函数,如glGetLight*()、glGetError()和glPolygonStipple()等。

另外,使用glPushAttrib()和glPopAttrib() 函数,可以存储和恢复最近的状态变量的值。

只要有可能,都应该使用这些函数,因为它们比其它查询函数的效率更高。

4.实验代码:一个简单的OpenGL程序如下:(注意,如果需要编译并运行,需要正确安装GLUT,安装方法如预备知识中所述)该程序的作用是在一个黑色的窗口中央画一个矩形、三角形和三个点。

下面对各行语句进行说明:首先,需要包含头文件#include <GL/glut.h>,这是GLUT的头文件。

本来OpenGL程序一般还要包含<GL/gl.h>和<GL/glu.h>,但GLUT的头文件中已经自动将这两个文件包含了,不必再次包含;然后看main函数。

int main(int argc, char *argv[]),这个是带命令行参数的main函数。

注意main函数中的各语句,除了最后的return之外,其余全部以glut开头。

这种以glut 开头的函数都是GLUT工具包所提供的函数,下面对用到的几个函数进行介绍;1)glutInit,对GLUT进行初始化,这个函数必须在其它的GLUT使用之前调用一次。

其格式比较固定,一般都是glutInit(&argc, argv)就行;2) glutInitDisplayMode,设置显示方式,其中GLUT_RGB表示使用RGB颜色,与之对应的还有GLUT_INDEX(表示使用索引颜色)。

GLUT_SINGLE表示使用单缓冲,与之对应的还有GLUT_DOUBLE(使用双缓冲)。

更多信息,以后的实验教程会有讲解介绍;3) glutInitWindowPosition,设置窗口在屏幕中的位置;4) glutInitWindowSize,设置窗口的大小;5) glutCreateWindow,根据前述设置的信息创建窗口。

参数将被作为窗口的标题。

注意:窗口被创建后,并不立即显示到屏幕上。

需要调用glutMainLoop才能看到窗口;6) glutDisplayFunc,设置一个函数,当需要进行画图时,这个函数就会被调用。

(暂且这样理解);7) glutMainLoop,进行一个消息循环。

(现在只需知道这个函数可以显示窗口,并且等待窗口关闭后才会返回。

)在glutDisplayFunc函数中,我们设置了“当需要画图时,请调用myDisplay函数”。

于是myDisplay函数就用来画图。

观察myDisplay中的三个函数调用,发现它们都以gl开头。

相关文档
最新文档