计算机图形学实验指导书
计算机图形学实验指导书(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位应用程序。
计算机图形学实验指导书zds

实验指导书
张东水
湖南科技大学建筑学院
...........................................................................................................................1 C ...................................................................................2 ...................................................................3 BEZIER ................................................................. 11 .........................................................................12 .........................................................................................13 OPENGL ............................................................................................17 .............................................................................................26 C .............................................................................27 .....................................................................................................................40
《计算机图形学》实验指导书

计算机图形学实验指导书袁科计算机技术实验中心目录实验一实现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)点。
要求能够输入任意两个端点的坐标。
实验内容提要:参考《计算机图形学基础》课程中的相关算法流程。
《计算机图形学》实习指导书-于子凡

对称变换 图形显示 扫描线填充算法 边缘填充 种子填充 二维裁剪
ID_FILL_SCANLINE ID _EDGE_FILL ID_FILL_SEED
7
Hermite 曲线
ID_CURVE_HERMITE
Cohen-Sutherland 算法
ID_CUT_CS
图形变换 平移 ID_TRANS_MOVE
中点分割算法 梁 友 栋 -Barsky 算法
ID_CUT_MIDDLE ID_CUT_LIANG
旋转
ID_TRANS_ROTATE
多边形裁剪
Байду номын сангаас
ID_CUT_POLYGON
完成的菜单如下所示
编译、执行程序,可以看到程序中的新菜单。但目前这些菜单还缺乏响应程序,不能执行, 程序以灰色来标识它们。
四、鼠标事件响应程序框架
五、鼠标坐标显示
为了精确定点,必须知道当前坐标,因此必须为操作者提示鼠标坐标。准备将坐标显示 在应用程序窗口的右下脚。 在自动生成的工程中, 窗口的右下脚处原是用来显示键盘按键信 息的(如下左图所示) ,现改为显示鼠标坐标(如下右图所示) 。
鼠标坐标显示步骤如下: 1)点击 VC 平台左窗口的 FileView 标签,显示所有程序文件。打开文件 mainfrm.h, 注销其中的变量(修改的部分用粗斜体表示,下同) public: virtual ~CMainFrame(); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif
鼠标光标在客户区移动 按下左鼠标键 按下中鼠标键 按下右鼠标键 松开左鼠标键 松开中鼠标键 松开右鼠标键 双击左鼠标键 双击中鼠标键 双击右鼠标键
计算机图形学基础实验指导书

计算机图形学基础实验指导书目录实验一直线的生成 ............................................................... -..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” 中定义。
图形学实验指导书

第一部分绪论本指导书是根据《计算机图形学》课程实验教学大纲编写的,适用于计算机科学与技术的相关专业。
一、本课程实验的作用与任务计算机图形学是研究利用计算机来处理图形的原理、方法和技术的学科。
图形的处理包括了图形生成、图形描述、图形存储、图形变换、图形绘制、图形输出等等。
计算机图形学与计算机图形处理技术是许多重要应用领域的基础,图形技术已经交叉渗透到各个应用学科中。
通过理论学习,再通过相应的实践操作,可以让学生掌握计算机图形技术的知识,培养计算机图形处理的能力,熟悉计算机图形应用软件和系统的设计、使用和组织。
本实验课程的任务是让学生学会如何把书本上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书本上的知识变“活”,起到深化理解和灵活掌握教学内容的目的。
二、本课程实验的基础知识本课程的主要讲授了计算机图形学的概念,研究内容和应用领域;图形(图像)信息的计算机处理;图形系统的组成和图形设备;图形基元及其属性的生成、操作和实现;图形操作与处理技术;二维及三维图形的表示、变换、窗口-视区变换等操作;图形的窗口与视区,图形的填充与剪裁,图段与图层处理;隐藏线、面消隐技术,计算机图形标准以及图形数据结构和图形程序设计等。
三、本课程实验教学项目及其教学要求第二部分基本实验指导实验一Window 图形编程基础一、实验目的1、熟练使用实验主要开发平台VC6.0;2、掌握如何在编译平台下编辑、编译、连接和运行一个简单的Windows 图形应用程序;3、掌握Window 图形编程的基本方法;4、学会使用基本绘图函数和Window GDI 对象;二、实验原理在程序中,用户可以自己设定绘制图形的形状和画笔的颜色,需要有变量(m_UserColor)记录用户选择的颜色;同理,需要有变量(m_UserShape)记录用户选择的图形。
在基于Document-View 的程序中,应用程序几乎所有的绘制工作都是在视图类的OnDraw(CDC*pDC)函数中完成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《计算机图形学》实验指导书郗润平编制西北工业大学计算机学院二○一一年四月修订说明根据我院《计算机图形学》教学大纲要求及课堂教学容,参阅其它院校本课程教学与实验课的容,并结合学生和实验室的情况,特编制本实验指导书供学生在上机实验课时参考使用。
本实验大纲择选与课程教学较为密切的若干实验,每个实验分别给出了参考机时数,实验时可根据具体的机时安排情况选做。
在附录中简单地介绍了Open GL 和DirectX 3D两个三维图形开发平台基本概念和相关的主要函数,供感兴趣同学入门学习参考使用。
XRP于2008.3.15 补充了MFC中几种常用DC的使用说明等;(附录二14)补充了VC下OpenGL编程框架细节。
(附录三)于2011.4.24 补充MFC菜单使用;(附录二10)补充了对话框使用;(附录二11)鼠标拾取点示例。
(附录二12)于2011.4.26 补充了工具条的使用(附录二13)于2013.3.14 增加三(二)9修改OnEraseBkgnd()函数,禁止重绘背景,避免动画时闪烁。
于Sydney 2014.1.18目录实验一直线生成算法 (1)实验二圆弧生成算法 (2)实验三窗口菜单交互界面 (3)实验四区域填充算法 (3)实验五裁剪算法算法 (4)实验六图形软件开发包/库应用 (4)实验七曲线的生成算法 (5)实验八曲面生成算法 (5)实验九二维图形变换 (6)实验十三维图形变换 (6)实验十一真实感图形 (7)附录 (8)一、C语言中图形函数及其用法 (8)二、VC集成开发环境下基于MFC绘图 (17)三、OpenGL绘图 (37)四、DirectX 3D绘图 (45)五、实验报告模板 (49)六、《计算机图形学》上机实验评分标准 (51)实验一直线生成算法一、实验教学目标与基本要求1. 了解光栅图形显示器的工作原理和特点;2. 学习C/VC环境下的基本绘图方法;3. 实践与巩固直线的基本生成算法。
4. 掌握直线扫描转换算法的原理及实现;二、实验课程容(2学时)基于光栅图形显示器,在C环境中生成不同粗细和线型的任意直线。
1. 了解光栅图形显示器的特点;2. 熟悉C环境下图形程序的绘图方法;3. 实践DDA、中点及Bresenham基本算法,并至少用两种基本算法生成任意直线;i. 任意斜率:-1≤k<0 , (50,400)→(500,50);0≤k≤1,如(50,50)→(300,200):1<|k|<∞, 如(50,50)→(300,400);k=∞,如(200,50)→(200,400)。
ii.任意起始点: 如(200,500)→(100,200), (300,200)→ (50,50)4. 改进方法,实现对直线实现线宽和线型(虚线、点划线等)的控制。
三、实验参考有关C环境下绘图介绍请参见附录一,以下实例为绘制一条直线(TC编译环境),供上机实验时参考使用。
#include "graphics.h"#include "string.h"main(){int x0=50,y0=50,x1=450,y1=450,color=3; //定义点(50,50),(450,450)和颜色colorint x,y;int gdriver=DETECT, gmode; //定义图形驱动程序和显示模式initgraph(&gdriver,&gmode, ""); //图形方式初始化cleardevice(); //清屏y=y0;for(x=x0;x<=x1;x++){putpixel(x,y,color); //用colo颜色绘制点(x,y)y=y+1;}getch(); //让画面停住, 等按一下键盘再继续closegraph(); //关闭图形方式return(0);}注:VC集成开发环境下基于MFC绘图可参考附录二实验二圆弧生成算法一、实验教学目标与基本要求1. 学习圆(弧)的基本生成算法;2. 了解光栅图形显示器的工作原理和特点;3. 实践圆(弧)的基本生成算法;4. 掌握圆弧扫描转换算法的原理及实现;5. 了解反走样技术。
二、实验课程容(2学时)基于光栅图形显示器,在C环境中生成任意圆弧,并实践反走样技术。
1. 巩固C环境下的绘图方法;2. 用中点和Bresenham算法生成任意位置圆(弧);3. 改进方法,实现线宽和线型的控制;4. 利用反走样技术改进直线和圆弧的生成算法。
实验三窗口菜单交互界面一、实验教学目标与基本要求1. 了解窗口系统有关概念,学习相关知识;2. 了解和学习菜单相关与知识;3. 理解交互的重要意义。
二、实验课程容(3学时)MS-Windows环境下窗口、菜单交互界面实现。
三、实验参考Win32编程方式参考教材P108-128有关容,MFC编程方式可参考附录二10-12。
实验四区域填充算法一、实验教学目标与基本要求1. 掌握区域填充的基本算法原理;2. 会使用字符的图形输出。
二、实验课程容(4学时)1. 多边形的扫描线、边标志及扫描线种子填充算法(至少实现两个算法);2. 在屏幕上输出矢量或点阵字符。
三、实验参考参考教材有关容。
实验五裁剪算法算法一、实验教学目标与基本要求熟悉裁剪算法的基本原理。
二、实验课程容(2学时)实现直线的Cohen-Sutherland、中点分割和参数化裁剪算法(至少实现两种裁剪算法)。
三、实验参考参考教材有关容。
实验六图形软件开发包/库应用一、实验教学目标与基本要求1. 会使用一种图形软件开发包;2. 学习窗口下图形界面设计;3. 能使用图形软件开发包绘制简单的图形/形体。
(为实验十一做准备)二、实验课程容(3学时)学习并实践使用图形软件开发包(Open GL或DirectX 3D等)绘图。
1. 熟悉图形开发平台程序设计过程;2. 使用图形库绘制简单图形/形体。
三、实验参考有关Open GL或DirectX 3D绘图介绍请参见附录三、四。
实验七曲线的生成算法一、实验教学目标与基本要求1. 掌握曲线生成的基本算法原理;2. 能实现曲线的生成;3. 掌握课本所介绍的图形算法的原理和实现。
二、实验课程容(4学时)实现Bezier曲线和B样条曲线生成算法。
1. Bezier曲线生成算法实现(参见教材P304~306):三次Bezier曲线及de Casteljau算法。
2. B样条曲线生成算法实现(参见教材P314~316):B样条曲线的分割,节点插入算法(选做)。
三、实验参考参考教材有关容。
实验八曲面生成算法一、实验教学目标与基本要求1. 学习曲面生成、隐藏的基本算法;2. 了解z缓冲器算法的应用;3. 掌握课本所介绍的图形算法的原理和实现。
二、实验课程容(4学时)曲面的隐藏线消除和z缓冲器的应用。
1. 曲面的隐藏线消除算法;2. 用z缓冲器算法绘出一个立方体的真实感图形。
三、实验参考参考教材有关容。
实验九二维图形变换一、实验教学目标与基本要求1.掌握图形变换的基本算法原理;2.实现若干典型二维图形变换算法。
二、实验课程容(4学时)1.生成前几次实验中的基本图形;2.对生成的基本图形进行平移、旋转、放缩、对称等变换。
实验十三维图形变换一、实验教学目标与基本要求1.实习三维图形的坐标系之间的变换;2.三维图形几何变换;3.掌握三维图形的坐标系之间的变换算法及三维图形几何变换的原理和实现。
二、实验课程容(4学时)实现三维图形的坐标系之间的变换(世界坐标、物坐标、屏幕坐标)以及三维图形几何变换。
三、实验参考参考教材有关容。
实验十一真实感图形一、实验教学目标与基本要求初步实现真实感图形,并实践图形的造型与变换等。
二、实验课程容(6学时)运用几何造型,几何、投影及透视变换、真实感图形效果(消隐、纹理、光照等)有关知识实现。
1. 用给定地形高程数据绘制出地形图;2. 绘制一(套)房间,参数自定。
三、实验参考参考教材及附录三、四有关容。
附录一、C语言中图形函数及其用法Turbo C 2.0/3.0具有丰富的图形功能,它提供了70多个图形函数。
在这里只介绍最常用的一部分,其余的图形函数及用法可参阅相关书籍。
图形函数均在头文件"graphics.h"中定义,所以在程序中调用这些图形函数时,必须在程序文件的开头写上文件包含命令:#include "graphics.h"。
1. 图形系统管理PC机的显示器有两种工作模式,一种是图形模式,另外一种是文本模式(缺省模式)。
在文本方式下,屏幕分为80列、25行,在该方式下,图形函数不能正确工作。
因此在使用图形函数绘图之前,必须将屏幕显示适配器设置为图形模式,这就是通常所说的"图形方式初始化"。
在绘图工作完毕之后,又要使屏幕回到文本方式,以便进行文本方式下的工作。
1) 图形方式初始化图形方式初始化是通过函数initgraph()来完成的。
其调用格式为:Initgraph (*gdriver,*gmode,*path);函数initgraph()的功能是通过从磁盘上装入一个图形驱动程序来初始化图形系统,并将系统设置为图形方式。
调用该函数必须用三个参数,其含义为:gdriver是一个整型值,用来指定要装入的图形驱动程序,如果给其赋值为DETECT(该值在头文件"graphics.h"已经中定义),则系统自动检测图形适配器的最高分辨率模式,并装入相应的图形驱动程序。
gmode是一个整型值,用来设置图形显示模式。
不同的图形驱动程序有不同的图形显示模式;即使是在同一个图形驱动程序下,也可能会有几种图形显示模式。
图形显示模式决定了显示的分辨率、可同时显示的颜色的多少、调色板的设置方式以及存储图形的一页数。
path是一个字符串,用来指明图形驱动程序所在的路径。
如果驱动程序就在用户当前目录下,则该参数可以为空字符串,否则应给出具体的路径名。
以上介绍了initgraph 函数中的三个参数的含义。
注意,前两个参数实际上是整形指针,调用时应加上地址运算符"&"。
例:int gdriver=DETECT,gmode;initgraph(&gdriver,&gmode, "");使用DETECT模式,由系统自动对硬件进行检测,并把图形显示模式设置为检测到的驱动程序的最高分辨率。
2) 关闭图形方式在运行图形程序绘图结束后,要回到文本方式,以进行其他工作,这时应关闭图形方式。
关闭图形方式要用函数closegraph()。
其调用格式为:closegraph();函数closegraph()的作用是:释放所有图形系统分配的存储区,恢复到调用initgraph()之前的状态。