图形学实验指导书2009(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编程进行简单介绍。
计算机图形学实验指导书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 曲线的绘制与显示。
图形学实验一 09009406
实验报告实验名称:三维分形算法姓名:陈怡东学号:09008406程序使用说明:程序打开后会呈现出3次分形后的四面体,因为考虑到观察效果的清晰所以就用了3次分形作为演示。
与用户的交互:1键盘交互:分别按下键盘上的数字键1,2,3,4可以分别改变四面体的4个面的颜色。
按下字母c(不区别大小写)可以改变视图函数,这里循环切换3种视图函数:glOrtho,glFrustum,gluPerspective,但是改变视图函数后要窗口形状变化后才能显现出来按下字母键q(不区别大小写)可以退出程序2鼠标交互:打开后在绘图的区域按下鼠标左键不放便可以拖动图形的视角,这里为了展现图形的3D效果因此固定了其中一点不放,这样就可以看到3D的效果。
鼠标右击则有弹出菜单显示,其中改变颜色则是同时改变4个面的颜色,本程序中运用了8组配色方案。
改变视图函数也是上述的3种函数,这里的效果立刻显现,但是还有很多问题达不到所要的效果,希望老师能帮忙解决一下。
设计思路:分形算法:把四面体细分成更小的四面体,先找出其6个棱的中点并连接起来,这样就在4个顶点处各有一个小的四面体,原来四面体中剩下的部分应当去掉。
仿效二维的生成方法,我们对保留的四个小四面体进行迭代细分。
这样细分结束后通过绘制4个三角形来绘制每一个剩下的四面体。
交互的实现:键盘交互,即通过对按键的响应写上响应函数实现对视图和颜色的改变。
鼠标交互:通过对鼠标左右按键的实现:该部分只做了必要的介绍,具体实现见代码(附注释)分形算法:void tetra(GLfloat *a,GLfloat *b,GLfloat *c,GLfloat *d)函数实现的是绘制四面体并且给四个面绘上不同的颜色。
以区别开来,函数的实现细节见代码,有注释介绍。
void triangle3(GLfloat *a,GLfloat *b,GLfloat *c)函数用来绘制每个平面细分后的三角形。
其中顶点设置为3维坐标glVertex3fv(a);void divide_tetra(GLfloat *a,GLfloat *b,GLfloat *c,GLfloat *d,int m)细分四面体的函数实现。
计算机图形学实验指导书
《计算机图形学》实验指导书华南农业大学信息学院信息学院章晓华主编目录第一部分《计算机图形学》实验要求 (1)一、《计算机图形学》实验教学概述 (1)1、实验教学的基本情况 (1)2、实验教学的指导思想和教学目的 (1)3、实验项目表 (1)二、《计算机图形学》实验教学规范 (2)1、实验课的意义 (2)2、实验步骤 (2)3、实验报告(文档)规范 (2)4、实验考核 (3)第二部分实验内容 (4)实验一图元的生成算法 (4)实验二多边形填充 (7)实验三二维图形变换 (14)实验四直线Sutherland算法的实现 (22)实验五二维图形系统 (26)第一部分《计算机图形学》实验要求一、《计算机图形学》实验教学概述1、实验教学的基本情况课程总学时数:48学时;课程总学分:3学分实验总学时:16适用专业:信息学院计算机科学与技术、软件工程、网络工程专业,软件学院软件工程专业考核方式及方法:实际操作+程序运行+实验报告。
实验成绩、考勤及书面作业成绩组成平时成绩。
平时成绩占课程总成绩30%,考试成绩占课程总成绩70%。
成绩评定:在参考“难度系数”的基础上>=90——选做内容/必做内容功能完善,编程风格好,人机接口界面好;80~90——必做内容功能完善,完成部分选做内容,编程风格好,人机接口界面良好;70~80——完成必做内容,编程风格良好;60~70——能完成必做内容;<60——未按时完成必做内容,或者抄袭(含雷同者)。
2、实验教学的指导思想和教学目的1)指导思想:掌握计算机图形的生成技术和生成各种平面图形和简单立体图形的基本算法,掌握图形填充、裁剪、图形变换及图形消隐等计算机图形处理的基本方法,初步掌握用C++语言编写基本图形生成和处理程序的方法,为后续的课程奠定良好的基础。
2)教学目的:为了使学生在课程学习的同时,通过在具体的编程环境中的实际操作,对计算机图形学的基本概念和方法能有一个初步的了解,使学生加深了解和更好地掌握《计算机图形学》课程教学大纲要求的内容,并培养学生动手编程解决实际问题的能力,训练学生分析问题和调试程序的能力,锻炼学生撰写科技实验论文的能力。
《计算机图形学》课内实验指导书
“计算机图形学”课内实验指导书杨新宇西安交通大学计算机科学与技术系课程基本情况实验学时: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,否则结束操作。
图形学实验指导书
第一部分绪论本指导书是根据《计算机图形学》课程实验教学大纲编写的,适用于计算机科学与技术的相关专业。
一、本课程实验的作用与任务计算机图形学是研究利用计算机来处理图形的原理、方法和技术的学科。
图形的处理包括了图形生成、图形描述、图形存储、图形变换、图形绘制、图形输出等等。
计算机图形学与计算机图形处理技术是许多重要应用领域的基础,图形技术已经交叉渗透到各个应用学科中。
通过理论学习,再通过相应的实践操作,可以让学生掌握计算机图形技术的知识,培养计算机图形处理的能力,熟悉计算机图形应用软件和系统的设计、使用和组织。
本实验课程的任务是让学生学会如何把书本上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书本上的知识变“活”,起到深化理解和灵活掌握教学内容的目的。
二、本课程实验的基础知识本课程的主要讲授了计算机图形学的概念,研究内容和应用领域;图形(图像)信息的计算机处理;图形系统的组成和图形设备;图形基元及其属性的生成、操作和实现;图形操作与处理技术;二维及三维图形的表示、变换、窗口-视区变换等操作;图形的窗口与视区,图形的填充与剪裁,图段与图层处理;隐藏线、面消隐技术,计算机图形标准以及图形数据结构和图形程序设计等。
三、本课程实验教学项目及其教学要求第二部分基本实验指导实验一Window 图形编程基础一、实验目的1、熟练使用实验主要开发平台VC6.0;2、掌握如何在编译平台下编辑、编译、连接和运行一个简单的Windows 图形应用程序;3、掌握Window 图形编程的基本方法;4、学会使用基本绘图函数和Window GDI 对象;二、实验原理在程序中,用户可以自己设定绘制图形的形状和画笔的颜色,需要有变量(m_UserColor)记录用户选择的颜色;同理,需要有变量(m_UserShape)记录用户选择的图形。
在基于Document-View 的程序中,应用程序几乎所有的绘制工作都是在视图类的OnDraw(CDC*pDC)函数中完成。
课件计算机图形学图形学实验指导书.docx
《计算机图形学》实验指导书首都师范大学信息工程学院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来完成的,其功能是通过装入一个图形驱动程序来初始化图形系统,并将系统设置为图形方式。
图形学 实验报告
图形学实验报告一、实验介绍图形学是计算机科学中的一个重要领域,主要研究计算机图形的生成、显示和处理。
本次实验旨在通过学习图形学的基本概念和算法,深入理解计算机图形的原理与应用。
二、实验内容本次实验主要包含以下内容:1. 图形学的基本概念和历史发展2. 图形学中常用的几何变换和投影算法3. 光栅化算法及其在图形渲染中的应用4. 着色和光照模型的原理及实现方法5. 三维场景建模与渲染技术三、实验步骤和结果1. 图形学的基本概念和历史发展首先我们了解了图形学的基本概念和历史发展。
图形学起源于20世纪60年代,当时主要用于计算机辅助设计(CAD)和计算机辅助制造(CAM)领域。
随着计算机技术的不断发展,图形学逐渐应用于计算机图形的显示和处理领域。
2. 几何变换和投影算法接下来我们学习了图形学中常用的几何变换和投影算法。
几何变换包括平移、旋转和缩放等操作,通过改变图形的位置、角度和尺寸,实现对图形的变换和组合。
投影算法主要用于将三维空间中的图形投影到二维屏幕上,实现透视效果。
3. 光栅化算法及其应用在图形渲染中,光栅化算法是非常常用的技术。
光栅化算法将连续的几何图形转化为离散的像素,实现图形在屏幕上的显示。
常见的光栅化算法包括扫描线算法和边界填充算法。
4. 着色和光照模型的原理与实现为了实现真实感的图形渲染,着色和光照模型是不可或缺的。
着色模型描述了在光照条件下物体表面的颜色,常见的着色模型包括平面着色模型和高洛德着色模型。
光照模型则描述了光线在物体表面的反射和折射过程,常见的光照模型包括冯氏光照模型和布林-菲菲尔德模型。
5. 三维场景建模与渲染技术最后我们学习了三维场景建模与渲染技术。
三维场景建模主要包括建立三维模型和场景的几何结构信息。
三维渲染技术则是将建模得到的三维场景转换为可显示的二维图像。
四、实验总结通过本次实验的学习,我们深入了解了图形学的基本概念和算法。
图形学在计算机图形的生成、显示和处理中具有重要应用,对于计算机科学专业学生来说,学习图形学是必不可少的。
计算机图形学基础实验指导书
《计算机图形学基础》实验指导书课程名称:计算机图形学基础英文名称:Computer Graphics课程性质:必修课程编号:适应专业:计算机科学与技术;软件工程学时学分:总学时48,实验学时102,总学分2编写人:王创存一、实验课程任务与要求1. 目的与任务:计算机图形学实验教学是为了将学生的计算机操作能力、分析能力、工程设计能力与应用实践结合起来,引导学生由浅入深地掌握计算机图形学理论与算法,掌握交互构图能力,具备工程应用的图形学基础。
本实验教学主要内容是要求学生用Visual Basic编程实现各种图形的绘制,强化学生的程序设计能力和程序调试能力,使学生巩固所学各种图形的生成算法的理论知识。
实践教学共包括十项内容。
2. 实验基本要求:(以软件设计为主要表现形式)上机前应准备好实验的程序设计算法描述与关键分析内容;准备好程序测试数据和设备操作步骤,上机调试、运行;完成每个实验后进行数据与程序对比分析,给出运行结果。
二、实验内容与学时安排实验一、图形输入/输出设备的操作使用及简单图形的输出(2学时)要求:(1)掌握图形设备的操作过程;测试图形设备的分辨率、性能;(2)图形软件包与外部设备的连接参数配置;(3)利用图形软件包绘制简单图形并在设备上输出;(4)设计菜单,实现人机交互方式控制图形设备进行简单操作实验二、编程环境及图形绘制基础练习(2学时)题目:绘制分形树基本要求:)数据输入项为:树干的起点坐标,树干长度,树枝倾斜角度,树枝层数,最短树枝;)结果直接输出在窗体中。
附加要求:(1)通过用户输入可改变线型(实线、虚线与点划线)。
(2)通过用户输入可改变线宽。
实验三、直线的绘制(2学时)题目:用逐点比较法或中点Bresenham法实现直线的绘制基本要求:)数据输入项为:直线的起点与终点坐标;)直线与圆输出在PictureBox控件中;)保存图形绘制结果,将该实验加入到菜单中去。
实验四、圆的绘制(2学时)题目:用逐点比较法或中点Bresenham法实现圆的绘制基本要求:)数据输入项为:圆心坐标与半径;)直线与圆输出在PictureBox控件中;)保存图形绘制结果,将该实验加入到菜单中去。
计算机图形学实验及课程设计
实验12 颜色渐变立方体
12.1 实验目的
掌握凸多面体消隐算法。 掌握双线性颜色插值算法。 建立基本三维场景。
实验12 颜色渐变立方体
12.2 实验要求
建立三维坐标系Oxyz,原点位于屏幕客户区中 心,x轴水平向右为正,y轴铅直向上为正,z轴 垂直于屏幕指向观察者。 以原点为体心绘制透视投影立方体,立方体8 个顶点的颜色分别为黑色、白色、红色、绿色、 蓝色、黄色、品红色和青色。背景色为黑色, 如图12-1所示。
实验4 二维几何变换
4.2 实验要求
使用静态切分视图,将窗口分为左右窗格。左窗格为继承于
CFormView类的表单视图类CLeftPortion,右窗格为一般视图
类CTestView。 左窗格提供代表“图形顶点数”(4、8、16和32)、“平移变 换”(x方向和y方向)、“旋转变换”(逆时针和顺时针)和 “比例变换”(放大和缩小)的滑动条,用于控制右窗格内的 图形变化。 右窗格内以屏幕客户区中心为图形的几何中心,绘制图形顶点 数从4变化为8、16和32的正多边形。为了表达图形的旋转,多
实验8 动态三视图
8.3 效果图
多面体动态三视图的效果如图8-1所示。
图8-1 多面体动态三视图的效果图
实验9 动态绘制Bezier曲线
9.1实验目的
掌握直线的参数表示法。 掌握德卡斯特里奥算法的几何意义。 掌握绘制二维Bezier曲线的方法。
实验9 动态绘制Bezier曲线
9.2 实验要求
实验8 动态三视图
8.1实验目的
掌握主视图变换矩阵。 掌握俯视图变换矩阵。 掌握侧视图变换矩阵。 掌握斜等测图绘制方法。
实验8 动态三视图
山东科技大学计算机图形学实验指导书
计算机图形学实验指导书张晓庆信息科学与工程学院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的矩形。
图形学实验指导书
《—计算机图形学—》实验指导书王卫东别小川编写适用专业:计算机科学与技术江苏科技大学电子信息学院2006年7 月前言计算机图形学(Computer Graphics)是研究怎样用数字计算机生成、处理和显示图形的一门学科。
随着计算机图形学不断发展,它的应用范围也日趋广泛。
计算机图形学课程目的及任务是着重介绍计算机图形学的基本内容及原理与方法。
它是计算机专业选修课。
课程的主要内容有计算机图形学的概论及应用,计算机用户接口和交互技术,计算机图形编程,二维图形扫描算法与几何变换,三维形体表示与投影变换,曲线与曲面造型技术,真实感图形等。
为了使学生更好地理解和深刻地掌握图形的几何变换、光栅图形的表示及处理方法、三维形体表示等方面的知识。
并在此基础上,训练和培养学生对基本图形系统的分析和设计能力,共设置了3项设计性实验,分别是图形的几何变换、区域填充、曲线及曲面表示。
图形的几何变换要求学生掌握图形的平移、缩放、旋转等基本变换知识。
区域填充要求学生了解并掌握光栅图形的表示方法,并实现种子算法或扫描线算法。
曲线及曲面表示属于三维图形的造型技术。
本指导书重点讲述了各实验的基本原理,并给出了详细的实验素材。
实验主要针对计算机科学与技术专业,也可作为研究生的辅助实验指导。
目录实验一:图形的几何变换.......................................................... 错误!未定义书签。
实验二:图形的区域填充.......................................................... 错误!未定义书签。
实验三:曲线、曲面的生成.................................................... 错误!未定义书签。
实验四:动画设计............................................................................ 错误!未定义书签。
计算机图形学试验指导书[1]
由于许多在计算机界具有领导地位的计算机公司纷纷采用 OpenGL 作为三维图形应用程序设计界面,OpenGL 应用程序具有广 泛的移植性。因此,OpenGL 已成为目前的三维图形开发标准,是从事 三维图形开发工作的技术人员所必须掌握的开发工具。
OpenGL 作为一个与硬件独立的图形接口,它不提供与硬件密切 相关的设备操作函数,同时,它也不提供描述类似于飞机、汽车、分子 形状等复杂形体的图形操作函数。用户必须从点、线、面等最基本的 图形单元开始构造自己的三维模型。
在 OpenGL 中进行主要的图形操作直至在计算机屏幕上渲染绘 制出三维图形景观的基本步骤为:
(1) 根据基本图形单元建立景物模型,并且对所建立的 模型进行数学描述(OpenGL 中把点、线、多边形、图像和位 图都作为基本图形单元);
(2) 把景物模型放在三维空间中的合适的位置,并且设 置视点(viewpoint)以观察所感兴趣的景观;
(3) 计算模型中所有物体的色彩,其中的色彩根据应用 要求来确定,同时确定光照条件、纹理粘贴方式等;
4
(4) 把景物模型的数学描述及其色彩信息转换至计算机 屏幕上的像素,这个过程也就是光栅化(rasterization)。 在这些步骤的执行过程中,OpenGL 可能执行其他的一些操作,例 如自动消隐处理等。另外,景物光栅化之后被送入帧缓冲器之前还可 以根据需要对像素数据进行操作。 OpenGL 能够对整个三维模型进行渲染着色,从而绘制出与客观 世界十分类似的三维景象。另外 OpenGL 还可以进行三维交互、动作 模拟等。具体的功能主要有以下这些内容。 (1)模型绘制 OpenGL 能够绘制点、线和多边形。应用这些基本的形体,可以构 造出几乎所有的三维模型。OpenGL 通常用模型的多边形的顶点来描 述三维模型。 (2)模型观察 在建立了三维景物模型后,就需要用 OpenGL 描述如何观察所建 立的三维模型。观察三维模型是通过一系列的坐标变换进行的。模型 的坐标变换使观察者能够在视点位置观察与视点相适应的三维模型 景观。在整个三维模型的观察过程中,投影变换的类型决定观察三维 模型的观察方式,不同的投影变换得到的三维模型的景象也是不同的。 最后的视窗变换则对模型的景象进行裁剪缩放,即决定整个三维模型 在屏幕上的图像。
计算机图形学课程实验指导书和作业
《计算机图形学》实验指导书、作业学期: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),并检查它的符号。
图形学实验报告
图形学实验报告计算机图形学实验指导书学号:1441901105姓名:谢卉实验一:图形的几何变换实验学时:4学时实验类型:验证实验要求:必修一、实验目的二维图形的平移、缩放、旋转和投影变换(投影变换可在实验三中实现)等是最基本的图形变换,被广泛用于计算机图形学的各种应用程序中,本实验通过算法分析以及程序设计实验二维的图形变换,以了解变换实现的方法。
如可能也可进行裁剪设计。
二、实验内容掌握平移、缩放、旋转变换的基本原理,理解线段裁剪的算法原理,并通过程序设计实现上述变换。
建议采用VC++实现OpenGL程序设计。
三、实验原理、方法和手段1.图形的平移在屏幕上显示一个人或其它物体(如图1所示),用交互操作方式使其在屏幕上沿水平和垂直方向移动Tx和Ty,则有x’=x+Tx y’=y+Ty其中:x与y为变换前图形中某一点的坐标,x’和y’为变换后图形中该点的坐标。
其交互方式可先定义键值,然后操作功能键使其移动。
2.图形的缩放在屏幕上显示一个帆船(使它生成在右下方),使其相对于屏幕坐标原点缩小s倍(即x方向和y方向均缩小s倍)。
则有:x’=x*s y’=y*s注意:有时图形缩放并不一定相对于原点,而是事先确定一个参考位置。
一般情况下,参考点在图形的左下角或中心。
设参考点坐标为xf、yf则有变换公式x’=x*Sx+xf*(1-Sx)=xf+(x-xf)*Sxy’=y*Sy+yf*(1-Sy)=yf+(y-yf)*Sy式中的x与y为变换前图形中某一点的坐标,x’和y’为变换后图形中该点的坐标。
当Sx>1和Sy>1时为放大倍数,Sx<1和Sy<1时为缩小倍数(但Sx 和Sy必须大于零)。
3.图形的旋转在屏幕上显示一个汽车,根据自己确定的旋转角度和旋转中心对图形进行旋转。
旋转公式为x’=xf+(x-xf)*cos(angle)-(y-yf)*sin(angle)y’=yf+(y-yf)*cos(angle)+(x-xf)*sin(angle)其中:xf,yf为围绕旋转的中心点的坐标。
《计算机图形学》实验指导书
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()
图形学实验指导书2009(1)
OpenGL简介一、OpenGL概述OpenGL是图形硬件的一个软件接口(GL代表图形库,Graphics Library)。
使用OpenGL,可以对计算机图形技术进行控制,产生逼真的现实世界的图象或虚拟的现实世界所没有的图象。
OpenGL包括了大约250个不同的函数,程序员可以用这些函数指定物体和操作,创建交互性三维应用程序,而不必为许多应用程序中通用的标准函数编写代码,同时使应用程序避免接触过多的硬件细节。
OpenGL主要关注图象的渲染,即根据几何图形对象的规范及其属性,使用虚拟的照相机和光源来构成一幅图象。
OpenGL是跨平台的一种应用程序接口(Application Programmer's Interface, API),因此不包含输入和视窗操作。
对于视窗管理,我们选用OpenGL应用工具包GLUT(OpenGL Utility Toollkit)。
二、OpenGL的组成在微机版本中,OpenGL主要由三个函数库组成,它们是核心库、实用函数库和编程辅助库。
OpenGL的核心库包含了OpenGL最基本的命令函数。
在这个库中,提供了一百多个函数,这些函数的函数名都以“gl”为前缀。
这些函数用来建立各种各样的几何模型、进行坐标变换、产生光照效果、进行纹理映射、产生雾化效果等几乎所有的二维和三维图形操作。
这一百多个基本函数由于使用各自不同的参数而导致格式的变形,派生出数百个命令。
而且,对于不同的硬件和软件平台,这些函数的使用是完全相同的,这个特性决定了OpenGL的可移植性。
OpenGL的核心库提供了创建基本几何图元的函数,通过基本几何图元的各种组合创建其它几何模型,几何模型也可称为物体。
为了减少编程负担,OpenGL实用函数库提供了40多个创建常用的几何对象函数,立方体、二次曲面等。
OpenGL实用库中函数的函数名以“glu”为前缀,所有函数都是利用核心库中函数编写,使用方法和核心库中函数的使用方法相同。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图形学实验指导书2009(1)OpenGL简介一、OpenGL概述OpenGL是图形硬件的一个软件接口(GL代表图形库,Graphics Library)。
使用OpenGL,可以对计算机图形技术进行控制,产生逼真的现实世界的图象或虚拟的现实世界所没有的图象。
OpenGL包括了大约250个不同的函数,程序员可以用这些函数指定物体和操作,创建交互性三维应用程序,而不必为许多应用程序中通用的标准函数编写代码,同时使应用程序避免接触过多的硬件细节。
OpenGL主要关注图象的渲染,即根据几何图形对象的规范及其属性,使用虚拟的照相机和光源来构成一幅图象。
OpenGL是跨平台的一种应用程序接口(Application Programmer's Interface, API),因此不包含输入和视窗操作。
对于视窗管理,我们选用OpenGL应用工具包GLUT(OpenGL Utility Toollkit)。
二、OpenGL的组成在微机版本中,OpenGL主要由三个函数库组成,它们是核心库、实用函数库和编程辅助库。
OpenGL的核心库包含了OpenGL最基本的命令函数。
在这个库中,提供了一百多个函数,这些函数的函数名都以“gl”为前缀。
这些函数用来建立各种各样的几何模型、进行坐标变换、产生光照效果、进行纹理映射、产生雾化效果等几乎所有的二维和三维图形操作。
这一百多个基本函数由于使用各自不同的参数而导致格式的变形,派生出数百个命令。
而且,对于不同的硬件和软件平台,这些函数的使用是完全相同的,这个特性决定了OpenGL的可移植性。
OpenGL的核心库提供了创建基本几何图元的函数,通过基本几何图元的各种组合创建其它几何模型,几何模型也可称为物体。
为了减少编程负担,OpenGL实用函数库提供了40多个创建常用的几何对象函数,立方体、二次曲面等。
OpenGL实用库中函数的函数名以“glu”为前缀,所有函数都是利用核心库中函数编写,使用方法和核心库中函数的使用方法相同。
由于OpenGL是一个图形标准,独立于任何操作系统和窗口系统,OpenGL中没有提供窗口管理和消息事件响应的函数,也没有从鼠标和键盘读取事件的功能。
因此,在不同的操作系统都设计OpenGL了额外的编程辅助库提供一些基本的窗口管理函数、事件处理函数,例如定义窗口的大小、处理键盘和鼠标事件等。
Windows 操作系统下的编程辅助库中函数的函数名以“aux”为前缀。
这些编程辅助库是依赖于具体操作系统的,为了支持跨平台,SGI公司的Mark Kilgard编写了GLUT,GLUT中函数的函数名以“glut”为前缀。
现在,在Windows操作系统GLUT已经取代了AUX库。
三、OpenGL的功能1、根据几何图元创建形状,建立物体的几何模型。
OpenGL中包括两种图元:几何图元和图象图元。
几何图元包括:点、直线段、三角形、四边形和多边形,这些图元通过顶点指定。
图象图元,例如位图。
2、在三维空间中排列物体,并选择观察复合场景的有利视角;3、计算所有物体的颜色。
颜色可以由应用程序明确指定,也可以根据特定的光照条件来确定,或通过把纹理表面贴到物体表面得到。
4、把物体的数学描述以及和它们相关的颜色信息转换为屏幕上的像素。
四、基于C语言和OpenGL的图形程序开发基础1、基于C语言和OpenGL的图形程序结构:根据需要在C语言程序中嵌入OpenGL命令。
2、程序中一般包括以下三个部分:(1)应用程序初始化;(2)生成并绘制图象;(3)main函数中调用(1)和(2)中的函数。
3、OpenGL命令格式和数据类型OpenGL命令就是OpenGL中的函数调用,命令名称就是函数名,命令中的参数就是函数调用所需的参数。
OpenGL函数命名约定:函数名饿头几个字母说蜜柑内该函数来自哪个库,后面部分包含一个根命令,一般是一个英文单词(第一个字母必须大写),表示该函数的功能,后缀中的数字和字母分别表示参数的个数和类型。
例如:命令glColor3f(1.0,1.0,1.0);前缀“gl”表示该函数属于核心库,“Color”表示该命令的功能为着色,“3f”表示该命令有三个参数,参数类型为浮点数,(1.0,1.0,1.0)是函数调用时的具体参数,最后的分号“;”是C语言格式中所要求的。
如果OpenGL命令的后缀有一个字母“v”,表示该命令有一个指向矢量或数组的指针参数,例如:GLfloat color[ ]={1.0,1.0,1.0}; //说明一个浮点型的数组color,GLfloat是数据类型glColor3fv(color); //数组color 作为参数OpenGL命令中的参数个数可能使个、3个或4个,参数类型见下表:OpenGL命令后缀及对应的数据类型OpenGL 命令中后缀表示的数据类型对应的OpenGL类型对应的C语言类型b 8位整数GLbyte Signedchar s 16位整数GLshort shorti 32位整数GLint,GLsizeilongf 32位浮点数GLfloat,GLclampffloatd 64位浮点数GLdouble,GLclampddoubleub 8位无符号整数GLubyte,GLbooleanunsignedcharus 16位无符号整数GLshort unsignedshortui 32位无符号整数GLuint,GLenum,GLbitfieldunsignedlong4、OpenGL中定义的符号常量OpenGL中的符号常量,以大写字母GL_或GL_开头,表示属于哪个库,所有字母都大写,单词之间用下划线连接。
例如,GL_COLOR_BUFFER_BIT,表示颜色缓冲区。
5、头文件gl.h、glu.h和glut.hOpenGL核心库的函数、类型和宏(符号常量)的原型包括在头文件gl.h中,实用函数库的原型包括在头文件glu.h中,应用工具包GLUT的原形4包括在头文件glut.h中。
OpenGL是一个标准的程序库,Windows系统运行OpenGL程序,需要在windows\system32文件夹包含动态连接库opengl32.dll和glu32.dll,使用GLUT的用户还需要包含动态连接库glut32.dll。
编译OpenGL程序需要有头文件gl.h和glu.h,使用GLUT的用户需要头文件glut.h,因为glut.h包括了gl.h和glu.h,所以仅用glut.h即可;还需要库文件opengl32.lib、glu32.lib和glut32.lib。
五.OpenGl命令命令:glClearColor函数原型:void glClearColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alph);功能:将缓存的当前清楚颜色设置为给定的颜色值(red,green,blue,alpha);参数:(red,green,blue)指定RGB颜色空间的一个颜色值,alpha指定透明度。
命令:glClear函数原型:void glClear(GLbitfield mask);功能:用当前的清楚值清楚1种或多种缓冲区。
参数:mask指定需要清除的缓冲区。
缓冲区对应的mask值见表1.1。
如果需要同时清除多种缓冲区,则将表中的多个值通过逻辑或(|)组合在一起表示msk值。
例如:同时清除颜色缓冲区和深度缓冲区。
mask=GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT。
命令:glColor3f函数原型:void glColor3f(GLfloat red,GLfloat green,GLfloat blue);功能:将当前的颜色值设置为指定的RGBA模式颜色值(red,green,blue,1.0f),其中1.0f为默认的混合因子数值。
参数:(red,green,blue),指定颜色值的R、G、B三个分量每个分量的取值范围均为区间[0.0,1.0]。
命令:SwapBuffers函数原型:Bool SwapBuffers(HDC hdc);功能:交换缓冲区,将绘制完成的缓存图像显示在屏幕上。
要求采用双缓存机制。
参数:hdc指定设备上下文。
返回值:如果函数执行成功,返回TRUE,否则,返回FALSE。
命令:glOrtho函数原型:void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble zNear,GLdouble zFar);功能:产生正平行投影变换矩阵。
参数:left、right分别为裁剪矩形体的左、右侧两个裁剪平面的X轴坐标值。
bottom、top分别为裁剪矩形体的底、顶端两个裁剪平面的Y轴坐标值。
(-zNear)、(-zFar)分别为裁剪矩形体的近、远端两个裁剪平面的Z轴坐标值。
命令:glFrustum函数原型:void glFrustum(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble zNear,GLdouble zFar);功能:产生透视投影变换矩阵。
参数:left、right分别为裁剪四棱台上底面矩形的左、右侧两条边的X轴坐标值。
bottom、top分别为裁剪四棱台上底面矩形底、顶端两条边的Y轴坐标值。
(-zNear)、(-zFar)分别为裁剪矩形体的近、远端两个裁剪平面的Z轴坐标值。
命令:gluPerspective函数原型:void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar);功能:产生对称透视投影变换矩阵。
参数:fovy裁剪四棱台在Y方向上的两个侧面夹角的度数,0<fovy<180。
aspect裁剪四棱台上底面命令:glViewport函数原型:void glViewport(GLint x0,GLint y0,GLsizei width,GLsizei height);功能:产生视口变换,将在三维空间中可以显示在屏幕上的点映射到视口中。
参数:x0,y0 视口左下角点在视图窗口坐标下的坐标值;width 视口的宽度;height 视口的高度。
命令:glVertex3d函数原型:void glVertex3d(GLdouble x,GLdouble y,GLdouble z);功能:用在一对函数glBegin和glEnd之间,用来指定一个顶点的坐标值。
参数:x,y,z 顶点坐标的三个分量。
命令:glBegin和glEnd函数原型:void glBegin(GLenum mode);void glEnd(void);功能:函数glBegin和glEnd 共同组成一个函数对。