计算机图形学实验指导书1
- 格式:doc
- 大小:88.50 KB
- 文档页数:10
实验指导书刘文涛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)掌握教材所介绍的图形算法的原理;(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 曲线的绘制与显示。
“计算机图形学”课内实验指导书杨新宇西安交通大学计算机科学与技术系课程基本情况实验学时:8适用专业:计算机专业本科生先修课程:数据结构,C语言程序设计开课学院:电子与信息工程学院开课学期:第七学期参考书:·DONALD HEARN & M.PAULINE BAKER著,蔡士杰、吴春鎔、孙正兴等译,《计算机图形学(第二版)》,PRENTICE HALL&电子工业出版社,2002年·David F. Rogers主编,《Procedural Elements for Computer Graphics》,机械工业出版社,2002年课程简介本实验是对《计算机图形学》课的课内实践,完成基本几何图形(线、圆、椭圆)的绘制。
教学基本要求与成绩的考核与评定办法一、实验课教学基本要求1.根据题目要求的功能,独立完成,培养自己独立思考、独立解决问题的能力;2.同学之间可以讨论研究问题,互相交流经验体会,但不可照抄;3.记录保存好自己的设计资料数据,调试完成后要写出详细设计报告;4.任务完成后老师要逐个检查验收,并结合实际情况提问答辩。
二、实验成绩的考核与评定办法在实验过程中考察动手能力,依据提交的设计报告、结合验收的实际情况综合打分。
实验项目名称:直线的DDA算法实验目的:1.掌握直线的DDA算法的编程实现。
实验环境:Windows操作系统、VC编程环境。
实验要求:以绘图区域中心为(0,0)点。
要求能够输入任意两个端点的坐标。
实验内容提要:参考《计算机图形学基础》课程中的相关算法流程。
实验类型:设计性。
实验项目名称:直线的Bresenham画线算法实验目的:1.掌握直线的Bresenham算法的编程实现。
实验环境:Windows操作系统、VC编程环境。
实验要求:以绘图区域中心为(0,0)点。
要求能够输入任意两个端点的坐标。
实验内容提要:参考《计算机图形学基础》课程中的相关算法流程。
计算机图形学基础实验指导书目录实验一直线的生成 ............................................................... -..2.-实验二圆弧及椭圆弧的生成........................................................ -..3 -实验三多边形的区域填充 ......................................................... - (4)-实验四二维几何变换 ............................................................. -..5.-实验五裁剪算法 ................................................................. -..6.-实验六三维图形变换 ............................................................. -..7.-实验七BEZIER 曲线生成......................................................... -..8.-实验八交互式绘图技术实现........................................................ -..10-实验一直线的生成一、实验目的掌握几种直线生成算法的比较,特别是Bresenham 直线生成算法二、实验环境实验设备:计算机实验使用的语言: C 或Visual C++ 、OpenGL三、实验内容用不同的生成算法在屏幕上绘制出直线的图形,对不同的算法可设置不同的线形或颜色表示区别。
四、实验步骤直线Bresenham 生成算法思想如下1)画点(x i, y i), dx=x2-x i, dy=y2-y i,计算误差初值P i=2dy-dx , i=1;2)求直线下一点位置x i+i=x i+i 如果P i>0,贝U y i+i=y i+i,否则y i+i=y i;3)画点(x i+i ,y i+i );4)求下一个误差P i+i 点,如果P i>0,贝U P i+i=P i+2dy-2dx,否则P i+i=P i+2dy;i=i+i ,如果i<dx+i 则转步骤2,否则结束操作。
计算机图形学实验指导书【】第一章计算机图形学的软件开发环境计算机图形学中的程序都是用C语言编写的,Turbo C和Visual C++常见的两种C语言开发环境,Turbo C是在Dos环境下开发,而Visual C++是在Windows环境下开发。
1.1、在Turbo C环境下开发应用程序一些高级语言都扩充了图形功能,这使得用户可以不需配备专门的图形软件,就能在计算机上进行图形工作。
Turbo C 2.0包含有460多个库函数,其中有 70 多个图形函数,这些函数包括了绘图、处理图象及图素、屏幕及视图区控制、颜色及线型设置、状态查询和出错处理等,这使得 TurboC具有很强的图形功能。
1.图形显示器的工作方式IBM PC 机的显示器可以在两种基本视频方式下工作:一种是文本方式;另一种是图形方式。
( 1 )文本方式在文本方式下,屏幕上可以显示的最小单位是字符,字符在屏幕上以行、列排列,即我们通常见到的情况。
文本方式不同,屏幕上所显示字符的行数和列数也不一样,颜色也会有所区别。
Turbo C 支持 6 种不同的文本显示方式。
( 2 )图形方式在图形方式下,屏幕上可以控制的最小单元称作像素 ( pixel ) ,它是组成图形的基本元素,一般叫作“点”。
通常把屏幕上所包含像素的个数叫做分辨率。
分辨率越高,显示的图形越细致、质量越好,这是显而易见的。
在图形方式下,屏幕上每个像素的显示位置用点坐标系来描述。
在该坐标系中,屏幕左上角为坐标系的原点,坐标值为 ( 0 , 0 ) ; 水平方向为X轴,自左向右;垂直方向为Y轴,自上向下。
见下图。
点坐标系中坐标值的范围决定于所用显示器的分辨率。
分辨率不同,水平方向上和垂直方向上的点数也不同,即其 maxx 、maxy 的数值不同。
就我们常用的 VGA 显示器来说,它通常所用的分辨率为6405480 ,即它的 maxx 值为 639 , maxy 的值为479。
2. 图形函数及其用法Turbo C 的图形函数均在一个头文件“ graphics.h” 中定义。
《计算机图形学》实验指导书首都师范大学信息工程学院2005年9月7日赵艳红通过学习《计算机图形学》课程可以了解和掌握计算机绘图的基本原理和算法,学会运用计算机编程语言和其它绘图工具绘制图形。
《计算机图形学》课程包括课堂教学和上机实验,这本实验指导书是为了配合上机实验而编写的。
第I章介绍了利用C语言绘图的基础知识,主要是考虑C语言课程屮讲授的重点是标准C (ANSIC),较少涉及图形环境和图形函数,因此着重讲解了C语言图形初始化的方法和常用C语言图形函数,并对Turbo C 3.0集成环境作了介绍。
第2章讲述了实验的上机要求和操作步骤,实验中可按步骤执行。
部分实验要求的后面附有C语言的源程序,可作为编程的参考。
上机实验时的注意事项和机房管理条例列于附录屮,请参照执行。
目录第1章C语言绘图基础1」图形与显示器基础1.2C语言图形初始化1.3Turbo C 3.0的集成环境第2章实验指导2」实验一直线的扫描转换2.2实验二旋转的矩形2.3实验三直线段的裁剪(或三维图形显示)2.4实验四曲线2.5实验五分形几何造型附录1关于工程文件的使用2Turbo C图形函数的分类3Turbo C图形函数(ABC顺序)4实验报告要求5上机实验屮编程技巧第1章C语言绘图基础1.1图形与显示器基础图形与计算机系统硬件有着密切的联系。
显示器的工作方式分为两种:一是正文方式,二是图形方式,要在屏幕上显示图形,就必须工作在图形方式下。
在图形方式中又分为多种模式,例如CGA,EGA,VGA等等。
不同的模式显示的分辨率不同。
支持显示模式需要三个条件:显示器,显示卡,和驱动程序。
下表列出Turbo C支持的图形模式。
1.2C语言图形初始化在计算机上绘制和显示图形,必须工作在图形方式下。
使用Turbo C绘制图形的基本步骤为:*设置图形方式*绘制图形*关闭图形方式图形方式初始化是通过函数initgraph来完成的,其功能是通过装入一个图形驱动程序来初始化图形系统,并将系统设置为图形方式。
《计算机图形学基础》实验指导书课程名称:计算机图形学基础英文名称:Computer Graphics课程性质:必修课程编号:适应专业:计算机科学与技术;软件工程学时学分:总学时48,实验学时102,总学分2编写人:王创存一、实验课程任务与要求1. 目的与任务:计算机图形学实验教学是为了将学生的计算机操作能力、分析能力、工程设计能力与应用实践结合起来,引导学生由浅入深地掌握计算机图形学理论与算法,掌握交互构图能力,具备工程应用的图形学基础。
本实验教学主要内容是要求学生用Visual Basic编程实现各种图形的绘制,强化学生的程序设计能力和程序调试能力,使学生巩固所学各种图形的生成算法的理论知识。
实践教学共包括十项内容。
2. 实验基本要求:(以软件设计为主要表现形式)上机前应准备好实验的程序设计算法描述与关键分析内容;准备好程序测试数据和设备操作步骤,上机调试、运行;完成每个实验后进行数据与程序对比分析,给出运行结果。
二、实验内容与学时安排实验一、图形输入/输出设备的操作使用及简单图形的输出(2学时)要求:(1)掌握图形设备的操作过程;测试图形设备的分辨率、性能;(2)图形软件包与外部设备的连接参数配置;(3)利用图形软件包绘制简单图形并在设备上输出;(4)设计菜单,实现人机交互方式控制图形设备进行简单操作实验二、编程环境及图形绘制基础练习(2学时)题目:绘制分形树基本要求:)数据输入项为:树干的起点坐标,树干长度,树枝倾斜角度,树枝层数,最短树枝;)结果直接输出在窗体中。
附加要求:(1)通过用户输入可改变线型(实线、虚线与点划线)。
(2)通过用户输入可改变线宽。
实验三、直线的绘制(2学时)题目:用逐点比较法或中点Bresenham法实现直线的绘制基本要求:)数据输入项为:直线的起点与终点坐标;)直线与圆输出在PictureBox控件中;)保存图形绘制结果,将该实验加入到菜单中去。
实验四、圆的绘制(2学时)题目:用逐点比较法或中点Bresenham法实现圆的绘制基本要求:)数据输入项为:圆心坐标与半径;)直线与圆输出在PictureBox控件中;)保存图形绘制结果,将该实验加入到菜单中去。
计算机图形学实验指导书张晓庆信息科学与工程学院2010年5月目录实验一环境设置(2学时)实验二直线和圆的生成算法(2学时)实验三填充和裁剪算法(4学时)实验四(选择1)二维图形的几何变换(2学时)实验四(选择2)真实感图形的绘制(2学时)实验一环境设置(2学时)一、实验目的1.掌握图形驱动程序及图形模式的基本概念,掌握图形初始化方法;2.掌握Turbo C 进行图形程序设计的基本方法;3.了解Turbo C 的图形功能,了解常见的图形库函数;4.初步了解OpenGL程序设计结构;了解OpenGL的基本数据类型、核心函数及辅助函数的使用。
二、实验要求1.图形系统初始化;2.综合应用Turbo C 中图形库函数,进行图形设计与绘制;3.熟悉Turbo C 和OpenGL开发环境,要求会对程序进行编辑,编译,调试(包括分步,断点设置等调试手段)。
三、实验内容1.图形系统初始化#include <graphics.h>include <stalib.h>include <stdio.h>include <conio.h>int main(void){int gdriver=DETECT,gmode=0;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)之间画一条//直线段,并和以下三句结合,画出长为//500宽为400的矩形。
《计算机图形学》实验指导谢晓玲华东理工大学信息学院计算机系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它代表了应用程序的主框架窗口,它负责创建和显示具体的窗口结构,并负责消息的分发。
《计算机图形学》实验指导书、作业学期:2011-2012(2)班级:测绘工程10-1班姓名:汪帅学号:20100202测绘工程学院目录实验一直线段生成算法实现 (1)实验二圆生成算法的实现 (5)实验三二维图形几何变换的实现 (8)实验四直线段裁剪算法的实现 (13)实验报告1 (19)实验报告2 (26)实验报告3 (30)实验报告4 (37)实验一 直线段生成算法实现一、实验目的熟练掌握DDA 直线生成算法、中点直线生成算法、Bresenham 直线生成算法的算法思想,了解各个算法中寻找直线段上的像素点的过程。
二、实验学时 2学时三、实验类型现代实验、验证性、自立式四、实验要求1.根据指导书所给的参考代码,每人至少实现两种直线段的生成算法。
2.要求能够实现任意起始点和终止点坐标的直线段的绘制。
3.能够实现不同线型(实线、虚线、点划线)、不同线宽(单像素宽度、多像素宽度)的直线段的绘制。
五、实验原理与步骤 原理:1.数值微分法(DDA )设一直线段的起点和终点坐标分别为(xs , ys)和(xe , ye)。
则直线段在X 和Y 方向的增量分别为: △x=xe- xs ,△y= ye- ys 设△t=max(|△x|,|△y|)取时间步长为1/△t,若当前像素点坐标为(xi, yi),则下一个像素点的坐标可由以下两式确定: xi+1=xi+dx=xi+Dx/Dt yi+1=yi+dy=yi+Dy/Dt 2.中点直线生成算法:假定直线斜率0<m<1,且已确定点亮象素点P (Xi ,Yi ),则下一个与直线最接近的像素只能是P1点或P2点。
设M 为中点,Q 为交点,现需确定下一个点亮的象素。
当M 在Q 的下方-> P2离直线更近更近->取P2 。
M 在Q 的上方-> P1离直线更近更近->取P1 M 与Q 重合, P1、P2任取一点。
假设直线方程为:ax+by+c=0 其中a=y0-y1, b=x1-x0, c=x0y1-x1y0 F(x,y)=0 点在直线上面 F(x,y)>0 点在直线上方 F(x,y)<0 点在直线下方欲判断M 点是在Q 点上方还是在Q 点下方,只需把M 代入F(x,y),并检查它的符号。
《计算机图形学》实验指导书《计算机图形学》实验指导书目录目录 (1)概述 (2)实验1 熟悉实验环境 (3)1.1 实验要求和目的 (3)1.2 实验课时 (3)实验2 直线的生成 (4)2.1 实验要求和目的 (4)2.2 实验课时 (4)2.3 实验环境 (4)2.4 实验平台简介: (4)2.5 思考题(选做) (5)实验3 多边形扫描转换算法 (7)3.1 实验要求和目的 (7)3.2 实验课时 (7)3.3 实验环境 (7)3.4 实验平台简介: (7)实验4 BSpline曲线绘制 (10)4.1 实验要求和目的 (10)4.2 实验课时 (10)4.3 实验环境 (10)4.4 实验平台介绍 (10)实验5 光照模型(Illumination Model) (13)5.1 实验要求和目的 (13)5.2 思考题 (13)5.3 实验课时 (13)5.4 实验环境 (13)5.5 实验平台介绍 (13)附录A:实验报告 (17)概述(1)实验概述运用某种程序设计语言设计并实现计算机图形学的直线、曲线、简单多面体(四面体)等基本图形元素的表示和绘制,以检验和巩固计算机图形学中的基本知识、加深对本课程原理、方法和技术的理解,锻炼和培养学生实际操作技能和解决实际问题的能力,使学生熟悉解决实际问题的过程。
(2)实验目的和要求实验目的是检验和巩固所学知识与方法,通过实现基本图形元的表示和绘制过程,理解并掌握计算机图形学的原理、方法和技术,并灵活运用它们解决实际问题。
要求理解各实验相关的原理和实现方法,通过这些实验的训练,加深对课程中原理、方法和技术的理解,验证和巩固计算机图形学中的基本知识,锻炼和培养学生熟悉图形编程环境,理解课程中基本问题的求解算法和性能改进方法,并对结果进行充分测试。
(3)主要原理与概念一般来说,计算机图形学的基本内容包括图形的表示(如三维形体的表示,曲线、曲面的表示等)、图形变换和观察、图形生成(基本图形生成,消隐、真实感绘制等)三个方面,涉及大量数据结构、算法。
《计算机图形学》实验指导书实验一:二维基本图元的生成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、参考:教材,开发平台的联机帮助。
电脑图形学实验指导实验一、直线的扫描转换算法实验实验目的掌握中点Bresenham直线扫描转换算法的思想。
实验环境实验内容问题描述:给定两个点的坐标P0(x0,y0),P1(x1,y1),使用中点Bresenham直线扫描转换算法画出连接两点的直线。
中点Bresenham直线扫描转换算法原理见课本。
实验基本步骤首先、使用MFC AppWizard(exe)向导生成一个单文档视图程序框架。
其次、使用中点Bresenham直线扫描转换算法实现自己的画线函数,函数原型可表示如下:void DrawLine(CDC *pDC, int p0x, int p0y, int p1x, int p1y);在函数中,可通过调用CDC成员函数SetPixel来画出扫描转换过程中的每个点。
COLORREF SetPixel(int x, int y, COLORREF crColor );再次、找到文档视图程序框架视图类的OnDraw成员函数,调用DrawLine函数画出不同斜率情况的直线,如下列图:最后、调试程序直至正确画出直线。
实验要求1写出中点Bresenham直线扫描转换算法的程序并在vc6下编译和调试通过,画出具有各种斜率范围的直线(仅使用GDI函数SetPixel函数)。
2按规定的实验格式写出实验报告,包含实验代码〔自己写的画线函数〕,结果〔截图〕。
实验二、多边形填充算法实验实验目的掌握边标志算法或有效边表算法进行多边形填充的基本设计思想。
实验环境实验内容问题描述:给定多边形的顶点的坐标P0(x0,y0),P1(x1,y1),P2(x2,y2),P3(x3,y3),P4(x4,y4)…使用边标志算法或有效边表算法进行多边形填充。
边标志算法或有效边表算法原理见课本。
实验基本步骤首先、使用MFC AppWizard(exe)向导生成一个单文档视图程序框架。
其次、实现边标志算法或有效边表算法函数,如下:void FillPolygon(CDC *pDC, int px[], int py[], int ptnumb);px:该数组用来表示每个顶点的x坐标py :该数组用来表示每个顶点的y坐标ptnumb:表示顶点个数注意实现函数FillPolygon可以直接通过窗口的DC〔设备描述符〕来进行多边形填充,不需要使用帧缓冲存储。
前言本课程的基本内容介绍,通过学习学生需要掌握的基本知识。
为了使学生更好地理解和深刻地把握这些知识,并在此基础上,训练和培养哪些方面的技能,设置的具体实验项目,其中哪几项实验为综合性、设计性实验。
各项实验主要了解、掌握的具体知识,训练及培养的技能。
本指导书的特点。
对不同专业选修情况说明。
实验:金刚石图案算法实验学时: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、可以设计成菜单方式,用对话框来设置半径和圆周上等分点的个数。
佛山科学技术学院计算机图形学实验指导书李晓东编电信学院计算机系2011年11月实验1 直线段的扫描转换实验类型:设计性实验类别:专业实验实验目的1.通过实验,进一步理解直线段扫描转换的DDA算法、中点bresenham算法及bresenham算法的基本原理;2.掌握以上算法生成直线段的基本过程;3.通过编程,会在C/C++环境下完成用DDA算法、中点bresenham算法及bresenham算法对任意直线段的扫描转换。
实验设备及实验环境计算机(每人一台)VC++6.0或其他C/C++语言程序设计环境实验学时:2学时实验内容用DDA算法中点bresenham算法及bresenham算法实现任意给定两点的直线段的绘制(直线宽度和线型可自定)。
实验步骤:1、复习有关算法的基本原理,明确实验目的和要求;2、依据算法思想,绘制程序流程图;3、设计程序界面,要求操作方便;4、用C/C++语言编写源程序并调试、执行;5、分析实验结果6、对程序设计过程中出现的问题进行分析与总结;7、打印源程序或把源程序以文件的形式提交;8、按格式要求完成实验报告。
实验报告要求:1、各种算法的基本原理;2、各算法的流程图3、实验结果及分析(比较三种算法的特点,界面插图并注明实验条件)4、实验总结(含问题分析及解决方法)实验2 圆的扫描转换实验类型:设计性实验类别:专业实验实验目的1、通过实验,进一步理解和掌握中点bresenham画圆算法的基本原理;2、掌握以上算法生成圆和圆弧的基本过程;3、掌握在C/C++环境下完成用中点bresenham算法圆或圆弧的绘制方法。
实验设备及实验环境计算机(每人一台)VC++6.0或其他C/C++语言程序设计环境实验学时:2学时实验内容用中点(Besenham)算法实现圆或圆弧的绘制。
实验步骤1.复习有关圆的生成算法,明确实验目的和要求;2.依据算法思想,绘制程序流程图(注意圆弧生成时的输入条件);3.设计程序界面,要求操作方便;4.用C/C++语言编写源程序并调试、执行;5.分析实验结果6.对程序设计过程中出现的问题进行分析与总结;7.打印源程序或把源程序以文件的形式提交;8.按格式要求完成实验报告。
实验报告要求:1.分析算法的工作原理;2.画出算法的流程图3.实验结果及分析(比较圆与圆弧生成算法的不同)4.实验总结(含问题分析及解决方法)实验3 多边形的区域填充学时:2实验类型:设计性实验类别:专业实验实验目的1.通过实验,进一步理解和掌握几种常用多边形填充算法的基本原理2.掌握多边形区域填充算法的基本过程3.掌握在C/C++环境下用多边形填充算法编程实现指定多边形的填充。
实验设备及实验环境计算机(每人一台)VC++6.0或其他C/C++语言程序设计环境实验学时:2学时实验内容用种子填充算法和扫描线填充算法等任意两种算法实现指定多边形的区域填充。
实验步骤1.复习有关算法,明确实验目的和要求;2.依据算法思想,绘制程序流程图(指定填充多边形);3.设计程序界面,要求操作方便;4.用C/C++语言编写源程序并调试、执行(最好能用动画显示填充过程);5.分析实验结果6.对程序设计过程中出现的问题进行分析与总结;7.打印源程序或把源程序以文件的形式提交;8.按格式要求完成实验报告。
实验报告要求:1.分析算法的工作原理;2.画出算法的流程图3.实验结果及分析(比较两种算法的不同)4.实验总结(含问题分析及解决方法)实验4 图形的裁剪--Cohen_Sutherland 裁剪算法实验类型:设计性实验类别:专业实验实验目的1、通过实验,进一步理解和掌握Cohen_Sutherland 裁剪算法的基本原理;2、掌握用Cohen_Sutherland 裁剪算法的基本过程;3、掌握在C/C++环境下用Cohen_Sutherland 算法编程实现用矩形窗口对直线的裁剪。
实验设备及实验环境计算机(每人一台)VC++6.0或其他C/C++语言程序设计环境实验学时:2学时实验内容用Cohen_Sutherland 算法编程实现用矩形窗口对直线的裁剪。
实验步骤1.复习有关算法,明确实验目的和要求;2.依据算法思想,绘制程序流程图(裁剪窗口固定);3.设计程序界面,要求操作方便;4.用C/C++语言编写源程序并调试、执行(最好能显示裁剪动画);5.分析实验结果6.对程序设计过程中出现的问题进行分析与总结;7.打印源程序或把源程序以文件的形式提交;8.按格式要求完成实验报告。
实验报告要求:1.分析算法的工作原理;2.画出算法的流程图3.实验结果及分析(比较圆与圆弧生成算法的不同)4.实验总结(含问题分析及解决方法)实验5 图形的裁剪--梁友栋裁剪算法实验类型:设计性实验类别:专业实验实验目的1.通过实验,进一步理解和掌握梁友栋裁剪算法的基本原理2.掌握用梁友栋裁剪算法裁减直线的基本过程3.掌握在C/C++环境下完成用梁友栋裁剪算法编程实现用矩形窗口对直线的裁剪。
实验设备及实验环境计算机(每人一台)VC++6.0或其他C/C++语言程序设计环境实验学时:2学时实验内容用Cohen_Sutherland 算法编程实现用矩形窗口对直线的裁剪。
实验步骤1.复习有关算法,明确实验目的和要求;2.依据算法思想,绘制程序流程图(裁剪窗口固定);3.设计程序界面,要求操作方便;4.用C/C++语言编写源程序并调试、执行(最好能显示裁剪动画);5.分析实验结果6.对程序设计过程中出现的问题进行分析与总结;7.打印源程序或把源程序以文件的形式提交;8.按格式要求完成实验报告。
实验报告要求:1.分析算法的工作原理;2.画出算法的流程图3.实验结果及分析(比较圆与圆弧生成算法的不同)4.实验总结(含问题分析及解决方法)实验6 几何图形变换实验实验类型:设计性实验类别:专业实验实验目的1、通过实验,掌握计算机图形变换的基本知识、原理;2、掌握二维和三维图形几何变换;3、通过使用VC++编程环境实现指定图形的常见几何变换;实验设备及实验环境计算机(每人一台)VC++6.0或其他C/C++语言程序设计环境(可使用OPENGL)实验学时:2学时实验内容1.在VC++编程环境下建立平面几何图形实现其常见几何变换;2.在VC++编程环境下建立三维立方体,实现其几何变换,包括缩放\平移\旋转. 实验步骤1.复习有关算法,明确实验目的和要求;2.依据算法思想,绘制程序流程图;3.设计程序界面,要求操作方便;4.用C/C++语言编写源程序并调试、执行(任意指定一个图形);5.分析实验结果6.对程序设计过程中出现的问题进行分析与总结;7.打印源程序或把源程序以文件的形式提交;8.按格式要求完成实验报告。
实验报告要求:1.分析算法的工作原理;2.画出算法的流程图3.实验结果及分析(比较圆与圆弧生成算法的不同)4.实验总结(含问题分析及解决方法)附录1:在TC下构建图形环境的代码及例子:/* display.h : 初始化图形系统函数*/#include "stdio.h"#include "stdlib.h"#include "graphics.h"#define ESC 0x1b/* INITIALIZE: Initializes the graphics system and reports *//* any errors which occured. */void Initialize(void){ int GraphDriver; /* The Graphics device driver */int GraphMode; /* The Graphics mode value */int ErrorCode; /* Reports any graphics errors */ GraphDriver = DETECT; /* Request auto-detection */initgraph( &GraphDriver, &GraphMode, "" );ErrorCode = graphresult(); /* Read result of initialization*/if( ErrorCode != grOk ){ /* Error occured during init */printf(" Graphics System Error: %s\n", grapherrormsg( ErrorCode ) );exit(1);}}以上Initialize函数就完成了图形环境的建立,以下就可以使用TC下的绘图函数完成绘图。
常用的TC绘图函数有:图形和图像函数包含在graphics.h里面(一) 像素函数1、putpixel() 画像素点函数(注意:与win32不同)2、getpixel()返回像素色函数(二) 直线和线型函数1. line() 画线函数2. lineto() 画线函数3. linerel() 相对画线函数4. setlinestyle() 设置线型函数5. getlinesettings() 获取线型设置函数6. setwritemode() 设置画线模式函数(三)、多边形函数7. rectangle() 画矩形函数8. bar() 画条函数9. bar3d() 画条块函数10. drawpoly() 画多边形函数(四)、圆、弧和曲线函数1. getaspectratio()获取纵横比函数2. circle()画圆函数3. arc() 画圆弧函数4. ellipse()画椭圆弧函数5. fillellipse() 画椭圆区函数6. pieslice() 画扇区函数7. sector() 画椭圆扇区函数8. getarccoords()获取圆弧坐标函数(五)、填充函数1. setfillstyle() 设置填充图样和颜色函数2. setfillpattern() 设置用户图样函数3 floodfill() 填充闭域函数4. fillpoly() 填充多边形函数5. getfillsettings() 获取填充设置函数6. getfillpattern() 获取用户图样设置函数附录2VC++6.0下多级菜单创建的例子(见CreateMenu.rar)。