计算机图形学实验任务书
- 格式:doc
- 大小:33.50 KB
- 文档页数:1
实验指导书刘文涛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.抛物线程序设计;2.Hermite 曲线程序设计;3.Bezier曲线的算法实现;4.B样条曲线的程序设计三、实验内容和实验步骤任务一:抛物线程序设计实现抛物线算法的C语言程序段如下:(工程名:parabola)Par(int xs,int ys,int xm,int ym,int xe,int ye) //已知起点、中点和终点三个控制点的坐标{double t,dt,ax,ay,bx,by,cx,cy;int n,i;ax=xe-2*xm+xs;ay=ye-2*ym+ys;bx=2.0*(xm-xs);by=2.0*(ym-ys);cx=xs; cy=ys;n=sqrt(ax*ax+ay*ay);n=sqrt(n*100.0);moveto(xs,ys);dt=1.0/n; t=0;for (i=0;i<=n; i++){lineto((int)(ax*t*t+bx*t+cx),(int)( ay*t*t+by*t+cy));t=t+dt;}lineto(xe,ye);}读者可以根据上述抛物线程序设计,写出抛物线参数样条曲线的程序。
任务二:Hermite 曲线程序设计P(t)=FB=TMB=[ t3 t2 t 1 ]程序设计时只考虑二维图形的显示,其代数形式为:x(t)=TMBx , Bx =[ P0x P1x R0x R1x]Ty(t)= TMBy , By =[ P0y P1y R0y R1y]T所以,只要给出Hermite曲线的起点坐标(P0x,P0y),终点坐标(P1x,P1y),以及起点处的切矢量(R0x,R0y)和终点处的切矢量(R1x,R1y),参数变量t在[0,1]的范围内分别取0.01,0.02,…,1,步长为0.01,取100个点,分别求出P(t)=[ x(t),y(t)],在计算机屏幕上显示出每个坐标点,即可绘出Hermite曲线。
计算机图形学实验指导书袁科计算机技术实验中心目录实验一实现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 曲线的绘制与显示。
计算机图形学实验教学大纲01.教学单位名称:机械科学与工程学院02.实验中心名称:机械基础实险教学中心03.课程名称:计算机图形学04.课程代码:41201305.课程类别:方法与技术06.课程性质:选修07.课程学时:30学时,其中含实验6学时08.课程学分:1.509.面向专业:机械工程、机械工程(卓越工程师教育培养计划)、工程力学、工业工程;车辆工程、车辆工程(卓越工程师教育培养计划)、工业设计、热能与动力工程;材料科学与工程、材料成型及控制工程;交通运输类(汽车运用工程)、汽车服务工程;农业机械化及其自动化、农业机械化及其自动化(卓越工程师教育培养计划)、包装工程。
10 .实验课程的教学任务、要求和教学目的教学任务通过实险,使学生了解计算机程序设计C语言(TurboC)的功能、特点和适用范围;上机验证TUrboC语言命令的操作步骤和形参设置及功能;完成相应章节“实例”中的图例绘制;培养学生利用计算机程序设计C语言(TI1rboC)编制程序处理图形的能力,为后续课程学习及毕业设计打下基础。
教学要求(1)能够较为熟练地掌握C语言程序设计软件基本命令的操作与使用,熟悉常用的绘图命令。
(2)能够编制程序正确绘制、变换各类平面图形、三维图形。
(3)每位学生课内上机不少于6学时,练习教材中所讲操作命令及应用举例和上机实践中内容。
(4)实验教学全程有任课教师辅导,及时解答学生遇到的问题,提高学生的学习效率。
教学目的通过上机操作练习,使学生进一步熟悉TurboC软件的操作界面、掌握基本命令、基本操作,使学生能够将理论授课环节学到的计算机图形生成与处理方面的基本理论和基本方法应用到计算机上来处理图膨并能够自主设计程序绘制教师布置的课外作业。
11 .学生应掌握的实验技术及实验能力(1)熟悉TUrboC软件的操作界面、困形系统的控制和管理;掌握C语言常用库函数及图形函数;了解常见错误、警告信息。
(2)了解TI1rboC图形函数及其用法;熟练掌握基本绘图函数命令;掌握图形属性控制方法;掌握图形方式下的文本输出方法;能够独立设计平面图形程序。
《计算机图形学》任务书一.课程设计的目的通过课程设计,使学生具备通过具体的平台实现图形算法的设计、编程与调试的能力,完成对实验结果分析、总结及撰写技术报告的能力。
二.课程设计的要求课程设计时间为第17周,地点:计412室,要求进实验室调试时必须有理论设计,调试通过后请辅导老师验收。
课程设计分组进行,一人一组,设计完成后每人提交一份课程设计报告,没有交报告的同学不予评定成绩。
本次课程设计备选题目有30个,每人选择一个提目,选定后不能更改。
每个题目的基本要求必须完成,其他可根据自身情况选做。
三.课程设计报告要求1.设计概述设计题目、设计要求、设计方案2.软件设计软件流程框图3.调试后的正确程序清单4.设计总结分析5.完整的课程设计报告【课程设计报告书内容要求】每一小组要上交一份完整的设计方案,统一用A4纸打印,内容包括:(1)实验报告封面(设计题目、小组成员)(2)设计题目(3)设计方案(4)程序流程图(包括各个子系统和子过程的程序流程)(5)程序清单,要有适当的注释(6)程序运行结果分析(7)系统不足及改进方案四.课程设计选题(任选一题)1、逐点比较法生成直线内容:(1)推导出该算法法绘制直线的原理;(2)根据算法原理,设计相应算法;(3)编写该算法的程序并实现;功能要求:(1)要求有两种方式进行输出:1)模拟算法输出;2)直接生成输出。
(2)采用屏幕或键盘输入坐标点;2、椭圆Bresenham算法内容:(1)推导出Bresenham法绘制椭圆的算法原理;(2)根据算法原理,设计相应算法;(3)编写绘制完整椭圆的中点或Bresenham算法程序;功能要求:(1)要求有两种输入方式:根据输入点来生成椭圆并输出椭圆的长短轴;输入椭圆的长短轴来生成椭圆;(2)椭圆的颜色为红色;3、多边形有效边表填充算法内容:(1)设计边表与活性链表数据结构;(2)根据多边形有效边表填充算法原理,设计相应算法;功能要求:(1)要求根据鼠标输入点来生成多边形;(2)通过右键菜单显示填充效果,右键菜单有两个选项:未填充与填充;(3)参考文[1]-6;4、区域四向种子点填充算法内容:(1)掌握四向邻接点的访问方法;(2)掌握堆栈的编程操作;(3)掌握种子填充算法原理;功能要求:(1)区域为多边形,要求根据鼠标输入点来生成多边形;(2)通过右键菜单实现填充效果;(3)参考文[1]-8;5.影线填充算法内容:(1)掌握影线填充算法原理;(2)掌握边界数据的组织方法;(3)掌握复合域转换为单值域的方法;(4)掌握影线和边界求交的计算方法;功能要求:(1)要求根据输入屏幕点生成多边形区域边界;(2)通过键盘按键实现填充一组斜线;6、直线快速裁剪算法内容:(1)掌握窗口相对于直线的位置判断;(2)掌握直线快速裁剪的原理;(3)实现点一直线裁剪和多条直线直线裁剪;功能要求:(1)要求根据输入两点来生成直线;(2)通过键盘按键实现裁剪;7.多边形裁剪算法内容:(1)掌握多边形算法原理;(2)掌握直线和窗口相交的判断条件;(3)掌握直线和窗口交点处的参数值计算方法;功能要求:(1)要求根据输入屏幕点生成多边形和窗口;(2)通过键盘按键实现裁剪;8. 三视图算法内容:(1)掌握三视图生成原理;(2)掌握主视图、俯视图和侧视图变换矩阵;功能要求:(1)缺省状态为正三棱柱的三维立体图;(2)通过右键菜单显示三视图,右键菜单有两个选项:立体图与三视图;9. 双三次Bezier曲面算法内容:(1)掌握双三次Bezier曲面定义;(2)实现矩阵相关运算;功能要求:(1)给定16个三维控制点如下:P00(200,20,0),P01(150,0,100),P02(50,-130,100),P03(0,-250,50);P10(150,100,100),P11(100,30,100),P12(50,-40,100),P13(0,-110,100);P20(140,280,90),P21(80,110,120),P22(30,30,130),P23(-50,-100,150);P30(150,350,30),P31(50,200,150),P32(0,50,200),P33(-70,0,100);(2)实现键盘控制曲面旋转效果10.立方体背面剔除消隐算法内容:(1)掌握背面剔除消隐算法原理;(2)实现矢量点积与叉积运算;(3)透视投影变换功能要求:(1)绘制立方体线框模型的透视投影图,使用背面剔除算法实现动态消隐;(2)通过右键菜单显示消隐效果,右键菜单有两个选项:未消隐与消隐;(3)使用键盘的上下左右控制键旋转消隐前后的立方体;(4)单击左键增加视距,右击缩短视距;11. 球体背面剔除消隐算法内容:(1)掌握背面剔除消隐算法原理;(2)实现矢量点积与叉积运算;(3)透视投影变换(4)曲面体经纬线划分方法功能要求:(1)绘制球体线框模型的透视投影图,使用背面剔除算法实现动态消隐;(2)通过右键菜单显示消隐效果,右键菜单有两个选项:未消隐与消隐;(3)使用键盘的上下左右控制键旋转消隐前后的球体;(4)单击左键增加视距,右击缩短视距;12.立方体动态Z-Buffer隐面算法内容:(1)掌握Z-Buffer消隐算法原理;(2)像素点动态深度计算;功能要求:(1)绘制立方体,使用Z-Buffer消隐算法实现消隐;(2)使用键盘的上下左右控制键旋转消隐前后的立方体;13.参数法绘制凸多面体动态图形内容:(1)掌握参数法绘制三维图形的方法;(2)掌握立体的数据结构形式并合理组织数据;功能要求:(1)绘制凸多面体(简易房子)的动态消隐图形;(2)使用键盘的上下左右控制键旋转消隐前后的立方体;14.明暗处理立方体算法-Gouraud明暗处理内容:(1)掌握双线性光强插值方法;(2)根据有效边表法绘制立方体每个面;功能要求:(1)绘制立方体,使用Gouraud明暗处理填充立方体各个面;(2)使用键盘的上下左右控制键旋转立方体;15.明暗处理立方体算法-Phong明暗处理内容:(1)掌握双线性法向量插值方法;(2)根据有效边表法绘制立方体每个面;功能要求:(1)绘制立方体,使用Phong明暗处理填充立方体各个面;(2)使用键盘的上下左右控制键旋转立方体;16.球的光照模型算法内容:(1)掌握简单光照模型计算;(2)球体绘制方法;功能要求:(1)绘制球体,给球体施加环境光、漫反射光和镜面反射光;(2)通过右键菜单控制显示效果,右键菜单安排如下:17.立方体纹理映射算法内容:(1)国际象棋棋盘纹理的制作;(2)立方体表面纹理映射方法;功能要求:(1)绘制立方体,给立方体添加国际象棋棋盘纹理;(2)使用键盘的上下左右控制键旋转立方体:18.编程实现时钟运动内容:(1)掌握动画基本原理;(2)实现平面几何变换;功能要求:(1)显示时钟三个时针,实现三根时针间的相互关系;(2)通过右键菜单切换时钟背景与时针颜色;19.实现皮球运动动画内容:(1)掌握动画基本原理;(2)圆的绘制;功能要求:圆皮球从某竖直高度以横向速度抛出,落地,弹起,最终静止。
计算机图形学基础实验指导书目录实验一直线的生成 ............................................................... -..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” 中定义。
《计算机图形学基础教程(Visual C++版)》实验大纲
一、实验目的与要求:
实验目的:巩固学生对计算机图形学的直线扫描转换原理、有效边表填充原理、三维透视投影原理、ZBuffer深度缓冲消隐原理和真实感图形生成原理的理解,增加学生对真实感图形生成算法的感性认识,强化训练学生使用Visual C++的MFC编写相关图形类的技能。
此前,课堂上已经完成《计算机图形学实践教程(Visual C++版)》的43个验证性实验的讲解,在此基础上,要求学生能综合使用全部教学内容完成综合性实验。
实验要求:要求学生在实验前了解综合性实验的目的和要求,观察实验效果图。
在实验中认真理解每个类的结构,通过搭积木的方式完成实验任务。
实验结束后按要求整理相关类的源程序,撰写实验报告,尤其需要对难点和重点进行详细说明。
二、实验项目与提要:
三、成绩考核方法:
本实验与计算机图形学课程同步开设,成绩占期末总成绩的20%~40%。
四、本课程与其他课程的联系和分工
先修课程:高等数学、线性代数、MFC程序设计语言、数据结构。
实验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.掌握计算机图形学及交互式计算机图形学的定义,了解OpenGL的功能及工作流程,掌握基于OpenGL Glut库的程序框架。
2.掌握基本的二维线画图元的绘制算法及属性,掌握OpenGL基本图元的绘制。
3.理解二维、三维图形的绘制流程,掌握二维图形和三维图形的图形变换。
4.了解形体的真实感表示的内容,包括消隐技术、简单光照明模型、多边形的明暗绘制技术以及纹理映射技术。
5.要求使用OpenGL及GLUT库在Visual C++环境下编写图形绘制程序实现基本图元绘制。
6.要求对绘制的简单场景综合利用几何变换或gluLookAt函数实现交互式三维观察程序。
二、主要内容
1.OpenGL基本图元绘制实验
在两个具有不同属性的窗口中分别显示旋转的正方形,要求正方形内部颜色逐渐
变化。
观察单缓存和双缓存绘制模式的区别,利用鼠标或菜单可终止/启动图形
旋转。
明确程序包括哪些函数,各个函数的功能以及整个流程,从而为进一步做
综合性的图形绘制实验奠定基础。
2.OpenGL三维观察综合实验
对于绘制的立方体或球体通过键盘移动视点,利用鼠标或键盘控制立方体的旋转
方向,从不同角度观察各面颜色不同的三维物体,观察光源变化引起的物体表面
变化情况,通过本实验加深理解计算机图形学中的三维图形绘制流程的工作原理
和OpenGL三维观察流程及相应的函数实现。
三、进度计划
四、实验成果要求
将源代码及运行结果贴报告中。
五、考核方式
实验报告、实验成果(源代码)。