计算机图形学课程设计任务书2015 - 副本

合集下载

计算机图形学课程设计

计算机图形学课程设计

计算机图形学课程设计一、课程目标知识目标:1. 让学生掌握计算机图形学的基本概念、基本原理和基本算法,如二维图形的表示、变换、裁剪和三维图形的建模、光照模型等。

2. 使学生了解计算机图形学在实际应用中的发展现状和前景,如虚拟现实、计算机辅助设计等。

3. 帮助学生建立计算机图形学与相关学科(如数学、物理、艺术等)的联系,提高跨学科素养。

技能目标:1. 培养学生运用计算机图形学知识解决实际问题的能力,如使用相关软件进行二维绘图、三维建模等。

2. 提高学生的编程能力,使其能够使用至少一种计算机图形学编程库(如OpenGL、DirectX等)实现基本图形绘制和动画效果。

3. 培养学生的团队协作能力和沟通表达能力,通过小组项目实践,共同完成具有一定难度的计算机图形学任务。

情感态度价值观目标:1. 激发学生对计算机图形学的兴趣,培养其主动探究、创新实践的精神。

2. 培养学生具有良好的审美观,能够从美学的角度评价和优化计算机生成的图形。

3. 强化学生的版权意识,尊重他人知识产权,遵循学术道德,树立正确的价值观。

本课程针对高中年级学生,结合学科特点和教学要求,将目标分解为具体的学习成果,以便于后续的教学设计和评估。

通过本课程的学习,期望学生能够掌握计算机图形学的基础知识,提高实际操作技能,培养良好的情感态度价值观。

二、教学内容1. 计算机图形学基本概念与历史:介绍计算机图形学的定义、发展历程、应用领域及发展趋势。

- 教材章节:第一章 计算机图形学概述- 内容安排:1课时2. 二维图形的表示与处理:讲解二维图形的数学表示、几何变换、裁剪算法等。

- 教材章节:第二章 二维图形处理- 内容安排:4课时3. 三维图形的建模与渲染:介绍三维图形的建模方法、光照模型、纹理映射等。

- 教材章节:第三章 三维图形处理- 内容安排:5课时4. 计算机动画与视觉效果:探讨计算机动画原理、关键帧动画、粒子系统等视觉效果技术。

- 教材章节:第四章 计算机动画与视觉效果- 内容安排:4课时5. 计算机图形学编程实践:学习计算机图形学编程库(如OpenGL、DirectX 等)的基本使用,完成二维和三维图形绘制实例。

计算机图形学课程设计

计算机图形学课程设计

《计算机图形学》课程设计报告学院:专业:班级:姓名:学号:指导教师:年11 月15 日一、课程设计报告内容说明:1 、直线:1.1 点生成直线利用for 循环,用pDC->SetPixel(int x,int y,RGB(a,b,c))像素函数画出直线。

1.2 DDA :根据直线的微分方程来产生直线,即dy/dx=△y/△x=(12y y -)/(12x x -)=k其中(1x ,1y )、(2x ,2y )是直线的两个端点坐标。

DDA 算法的原理是增量法,即使x 和y 同时以很小的步长增长,每次增长量与x 和y 的一阶导数成正比。

直线的一阶导数是与△x 和△y 成正比的函数。

可以将x 和y 各递增ε△x 和ε△y 来产生线,ε是很小的量。

从当前画线任意点的位置(i x ,i y )上分别递增两个增量ε△x 和ε△y ,就可以得到直线增长的下一个(1+i x ,1+i y )的坐标位置公式如下1+i x =ix +ε△x1+i y =i y +ε△y1.3 金刚石将圆分为20份,利用直线生成的MoveTo 和LineTo 函数,使每个点与其他点相连。

展示图形为:点生成直线、数值微分法画直线、金刚石 2、曲线2.1 直角坐标系:写出参数表达式后,利用MoveTo 和LineTo 函数,连接各点。

如:正弦曲线:参数方程如下 x_SIN=1000*t; y_SIN=1000*sin(t);极坐标系:写出参数表达式后,利用MoveTo 和LineTo 函数,连接各点。

如:四叶图:参数方程如下r_SIYE=5000*sin(2*t); x_SIYE=r_SIYE*cos(t); y_SIYE=r_SIYE*sin(t);2.2 以实际工作中应用较多的参数样条曲线为例:参数样条曲线定义:给定n+1个控制点Pi (i =0,1,2,…,n ),n 次B 样条曲线段的参数表达式为: 。

依次用线段连接控制点Pi (i =0,1,2,…,n )组成的多边形称为B 样条曲线控制多边形。

计算机图形学课程设计

计算机图形学课程设计

《计算机图形学》课程设计报告题目名称:球体背面剔除消隐算法专业计算机科学与技术班级计科15升-1班学号 1516353004姓名指导教师王玉琨2016 年 06 月 07 日目录设计内容与要求 (03)总体目标和要求 (03)内容与要求 (03)总体设计 (03)2.1 球的消隐处理基本原理 (03)2.2 具体设计实现 (04)详细设计 (04)3.1调试后正确的程序清单 (04)功能实现 (08)4.1程序运行结果 (09)4.2 功能实现及分析 (09)总结 (09)参考文献 (10)球体背面剔除消隐算法第 1章设计内容与要求1.1 总体目标和要求课程设计的目的:以图形学算法为目标,深入研究。

继而策划、设计并实现一个能够表现计算机图形学算法原理的或完整过程的演示系统,并能从某些方面作出评价和改进意见。

通过完成一个完整程序,经历策划、设计、开发、测试、总结和验收各阶段,达到:1) 巩固和实践计算机图形学课程中的理论和算法;2) 学习表现计算机图形学算法的技巧;3) 培养认真学习、积极探索的精神;4) 具备通过具体的平台实现图形算法的设计、编程与调试的能力;5) 完成对实验结果分析、总结及撰写技术报告的能力。

总体要求:策划、设计并实现一个能够充分表现图形学算法的演示系统,界面要求美观大方,能清楚地演示算法执行的每一个步骤。

开发环境:Viusal C++ 6.01.2 内容与要求球体背面剔除消隐算法内容:(1)掌握背面剔除消隐算法原理;(2)实现矢量点积与叉积运算;(3)透视投影变换(4)曲面体经纬线划分方法功能要求:(1)绘制球体线框模型的透视投影图,使用背面剔除算法实现动态消隐;(2)通过右键菜单显示消隐效果,右键菜单有两个选项:未消隐与消隐;(3)使用键盘的上下左右控制键旋转消隐前后的球体;(4)单击左键增加视距,右击缩短视距;第2章总体设计2.1 球的消隐处理基本原理球体的曲面通常采用一组网格多边形来表示,即把曲面离散成许多小平面片,用平面逼近曲面,一般使用许多四边形来逼近曲面。

计算机图形学课程设计书

计算机图形学课程设计书

课程设计(论文)任务书理学院信息与计算科学专业2015-1班一、课程设计(论文)题目:图像融合的程序设计二、课程设计(论文)工作:自2018 年 1 月10 日起至2018 年 1 月12日止三、课程设计(论文) 地点:2-201四、课程设计(论文)内容要求:1.本课程设计的目的(1)熟悉Delphi7的使用,理论与实际应用相结合,养成良好的程序设计技能;(2)了解并掌握图像融合的各种实现方法,具备初步的独立分析和设计能力;(3)初步掌握开发过程中的问题分析,程序设计,代码编写、测试等基本方法;(4)提高综合运用所学的理论知识和方法独立分析和解决问题的能力;(5)在实践中认识、学习计算机图形学相关知识。

2.课程设计的任务及要求1)基本要求:(1)研究课程设计任务,并进行程序需求分析;(2)对程序进行总体设计,分解系统功能模块,进行任务分配,以实现分工合作;(3)实现各功能模块代码;(4)程序组装,测试、完善系统。

2)创新要求:在基本要求达到后,可进行创新设计,如改进界面、增加功能或进行代码优化。

3)课程设计论文编写要求(1)要按照书稿的规格打印誊写课程设计论文(2)论文包括封面、设计任务书(含评语)、摘要、目录、设计内容、设计小结(3)论文装订按学校的统一要求完成4)参考文献:(2)Steve Cunningham,《计算机图形学》,机械工业出版社(3)5)课程设计进度安排内容天数地点程序总体设计 1 实验室软件设计及调试 1 实验室答辩及撰写报告 1 实验室、图书馆学生签名:2018年1月12日摘要图像融合是图像处理中重要部分,能够协同利用同一场景的多种传感器图像信息,输出一幅更适合于人类视觉感知或计算机进一步处理与分析的融合图像。

它可明显的改善单一传感器的不足,提高结果图像的清晰度及信息包含量,有利于更为准确、更为可靠、更为全面地获取目标或场景的信息。

图像融合主要应用于军事国防上、遥感方面、医学图像处理、机器人、安全和监控、生物监测等领域。

计算机图形学任务书

计算机图形学任务书

《计算机图形学》任务书一.课程设计的目的通过课程设计,使学生具备通过具体的平台实现图形算法的设计、编程与调试的能力,完成对实验结果分析、总结及撰写技术报告的能力。

二.课程设计的要求课程设计时间为第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)圆的绘制;功能要求:圆皮球从某竖直高度以横向速度抛出,落地,弹起,最终静止。

图形学课程设计要求 《计算机图形学》

图形学课程设计要求 《计算机图形学》

《计算机图形学》课程设计一、 设计要求1. 根据设计任务,编制程序,在机器上调试运行,并通过上机考核。

2. 按照下面的“三、课程设计报告格式”的要求,写出课程设计报告。

3. 课程设计报告在第19周之前交来。

二、 设计任务1.1)给定直线的起点坐标为P0(x0,y0)、终点坐标为P1(x1,y1),容易计算出直线斜率k 。

假设0≤k ≤1,则x 方向为主位移方向,绘制直线的递推公式为:,这称为数值微分法(Digital Differential Analyzer ,DDA ),请编程实现之。

提示:DDA 算法实质上是对直线斜率进行了四舍五入计算。

2)椭圆的扫描转换。

2.用鼠标在屏幕上绘制任意顶点数的封闭多边形并填充,填充效果如下图所示。

编程要求:⑴多边形的顶点数不受限制;⑵按下鼠标左键,拖动鼠标绘制多边形,同时按下Shift 键可以绘制水平边或垂直边; ⑶单击鼠标右键闭合多边形; ⑷使用边缘填充算法填充多边形。

⎩⎨⎧+=+=++k y y x x i i i i 1113请按照图所示,使用对话框输入直线的起点和终点坐标。

在窗口左侧区域绘制输入直线和“窗口”,在窗口右边右侧区域绘制“视区”并输出裁剪结果。

这里需要用到窗视变换的公式。

请分别用Cohen-Sutherland算法、中点分割裁剪算法和梁友栋-Barsky算法实现。

4在屏幕上使用鼠标绘制控制多边形,根据控制多边形的阶次绘制Bezier曲线和B样条曲线。

5.1)使用VC编程实现,以直角三角形为基础绘制下图所示Sierpinski三角形。

2)以屏幕范围为基础绘制下图所示Sierpinski地毯。

6.1)给定直线的起点颜色(如红色)和终点颜色(如黑色)不同,请使用中点Bresenham算法绘制任意斜率的颜色渐变直线,效果如图所示。

2)用梁友栋-Barsky算法裁剪线段P1(3,3),P2(-2,-1),裁剪窗口为wxl=0,wxr=2,wyb=0,wyt=2。

计算机图形学课程设计安排

计算机图形学课程设计安排

《计算机图形学》课程设计要求及安排一.实习目的《计算机图形学实习》是实践性教学环节之一,是《计算机图形学》课程的辅助教学课程。

通过实习,达到如下目的:(1)巩固和综合应用所学的计算机图形学理论知识,培养学生理论联系实际和独立思考问题的能力;(2)培养学生实际运用《计算机图形学》的知识设计计算机课题的思想和方法;(3)培养学生分析、设计和解决实际问题的能力,加强创新素质教育,激发学生的实际开发创造意识和能力;(4)培养学生调查研究、查阅技术文献、资料、手册以及编写技术文献的能力;(5)培养学生团结协作,共同完成相关课题的能力。

二.实习内容及要求要求学生在理解直线、圆、区域填充、图形裁剪等理论知识的基础上,借助于程序设计语言(如VC++、VB等)进行小型图形应用软件的开发,要求界面美观(包括菜单栏、工具栏)、功能相对完整、衔接自然、注重交互性。

主要知识点包括:(1)点、线、圆、多边形等计算机基本图元的的绘制(必做)(2)点、线、圆、多边形等计算机基本图元属性的设置(3)平移、缩放、旋转等计算机图形的几何变换(必做)(4)图形的裁剪(5)平面投影和透视投影(6)样条曲线、曲面的绘制(7)三维图形的真实感实现学生可以在实习老师的指导下,按3-5人为一小组完成一个简易图形系统的设计与开发,系统实现内容要求包括以上至少4个知识点(包括必做知识点,其它任选或自己设计),并完成实习文档;或者独立一人完成一项创新性,综合性较强的设计开发项目,并完成实习文档。

实习文档与结果要求标准化,即按规定的格式书写并提交。

三.考核方式及办法根据学生任务完成的情况、设计报告的质量及平时的学习态度等全面评定成绩。

学期成绩考核为五级记分制。

百分制与五级记分制的换算关系为:优秀(90—100分)、良好(80—89分)、中等(70—79分)、及格(60—69分)、不及格(60分以下)。

考核参考标准:以实际操作技能和分析解决问题的能力为主,实习考核内容各单项所占分数比例为:操作技能占60%,实习报告(作业或作品)占40%。

计算机图形学实验及课程设计

计算机图形学实验及课程设计
计算机图形学实验及课程设计
孔令德 2012年春于太原
实验任务书
一、实验目的与要求
实验目的:巩固学生对计算机图形学的直线扫描转换原理、 有效边表填充原理、三维透视投影原理、ZBuffer深度缓冲消隐 原理和真实感图形生成原理的理解,增加学生对真实感图形生 成算法的感性认识,强化训练学生使用Visual C++的MFC编写 相关图形类的技能。 此前,课堂上已经完成《计算机图形学实践教程(Visual C++版)》的43个验证性实验的讲解,在此基础上,要求学生 能综合使用全部教学内容完成综合性实验。 实验要求:要求学生在实验前了解综合性实验的目的和要 求,观察实验效果图。在实验中认真理解每个类的结构,通过 搭积木的方式完成实验任务。实验结束后按要求整理相关类的 源程序,撰写实验报告,尤其需要对难点和重点进行详细说明。


使用双缓冲技术在屏幕上绘制三维立方体的二维透视投影图。
使用键盘方向键旋转立方体线框模型。 按下鼠标左键缩小立方体,按下鼠标右键增大立方体。
使用工具条上的“动画”图标播放立方体线框模型的旋转动画。
实验7立方体线框模型透视投影
7.3 效果图
立方体线框模型透视投影效果如图7-1所示。
图7-1 立方体线框模型透视投影效果图
图9-1 动态绘制Bezier曲线效果图
实验10 交互式三次B样条曲线
10.1 实验目的
掌握三次B样条曲线的基函数。 掌握分段三次B样条曲线的绘制方法。 掌握三次B样条曲线的特殊构造技巧。 掌握图形顶点可视化移动技巧。
实验10 交互式三次B样条曲线
10.2 实验要求
给定9个控制点:P0 (104,330),P1= (204,231), P2= (286,362),P3= (363,145),P4= (472,527), P5= (548,228),P6= (662,40),P7= (830,450), P8= (930,350)。绘制三次B样条曲线。 移动鼠标光标到控制点上,光标变为手形,显示 其坐标信息。 拖动控制点,曲线形状随之发生改变,验证三次 B样条曲线的特殊构造技巧。

计算机图形学课程设计任务书[1]

计算机图形学课程设计任务书[1]
8.撰写课程设计报告(任务书)
设计报告应包括的内容:课题名称及要求;系统总体设计方案(画出系统原理框图、方案的论证与比较等内容);画出程序整体框图。课程设计报告应认真、规范、正确
4.主要参考文献
1、杜晓增.计算机图形学基础(第二版).北京:机械工业出版社,2003
2、唐敏,童若锋.计算机图形学课程设计.杭州:浙江大学出版社,2008
具体要求:
(1)写出实现方法;
(2)实现该方法;
19.设计一个多边形,利用活化实现方法;
(2)实现该方法;
3.课程设计任务及工作量的要求〔包括课程设计计算说明书、图纸、实物样品等要求〕
利用VC++或C++等工具进行应用程序的设计。学生应做到如下要求:
1.必须熟悉任务书的各项内容和要求,明确课程设计的目的、方法和步骤
2.设计中必须努力认真,独立地按质按量地完成每一阶段的设计任务
3.设计中严禁抄袭他人的设计成果
4.每人在设计中必须遵守各组规定的统一设计时间及有关纪律
5.所设计的程序必须满足实际使用要求,编译出可执行的程序
6.要求程序结构简单,功能齐全,使用方便
7.学生在完成系统功能的设计、调试后,申请指导教师验收。
(3)用中点法或区域代码的方法实现裁剪。
3、《图形变换》
具体要求:
(1)绘制出图形;
(2)实现图形的平移、旋转、缩放、错切等变换。
4、《绘制曲线》
具体要求:
(1)编写一个交互绘制Bezier或B样条曲线的程序;
(2)给出控制点就能绘制曲线;
(3)自己编写函数实现。
5、《可见面判断》
具体要求:
(1)绘制多面体图形;
(3)对汉字进行填充及各种变换。

计算机图形学OpenGL(第三版)教案

计算机图形学OpenGL(第三版)教案

《计算机图形学》教案2016年3月22日目录1.个人授课守则……………………………………………………………………2.课程概貌…………………………………………………………………………3.课程教学总体目标与要求………………………………………………………4.课程教学方式总体设计…………………………………………………………5.课程板书总体设计………………………………………………………………6.主页面板书设计…………………………………………………………………7.课程教学进度安排………………………………………………………………8.课时备课教案……………………………………………………………………8.1第1次课……………………………………………………………………8.2第2次课……………………………………………………………………8.3第3次课……………………………………………………………………8.4第4次课……………………………………………………………………8.5第5次课……………………………………………………………………8.6第6次课……………………………………………………………………8.7第7次课……………………………………………………………………8.8第8次课……………………………………………………………………8.9第9次课……………………………………………………………………8.10第10次课……………………………………………………………………8.11第11次课……………………………………………………………………8.12第12次课……………………………………………………………………9.课程综合性实验设计……………………………………………………………10.英语参考词……………………………………………………………………11.平时考勤与成绩记载汇总表…………………………………………………《计算机图形学》教案陆济湘 2015年12月第三版1 个人授课守则☆为人师表身体力行做阳光下纯净的代表,做黑夜中引路的烛光,布局平凡,杜绝市侩,求真求新,坦然一生。

课程设计任务书

课程设计任务书
(3)阀门装配图画成三视图(主视图、左视图、俯视图、轴侧图,带图框、标题栏、明细表)。
(4)自由设计零件,彩色打印并交电子版。(必须包含实体元素、拉伸元素、旋转元素、渲染)。(不允许与其他同学重复)
计ቤተ መጻሕፍቲ ባይዱ机绘图基础课程设计
班级:
姓名:
学号:
院系:
指导教师:
计算机绘图基础课程设计任务书
姓名
班级
学号
设计任务书包括:
1.课程设计的意义
2.课程设计的要求
(1)培训日常练习选择10个图形打印成三维图形。(可按比例打印在一张图纸上)
(2)在10个图形中任选1个画成三视图,并标注尺寸(主视图、左视图、俯视图、轴侧图,带图框标题栏)。

计算机图形学课程设计-孟芸

计算机图形学课程设计-孟芸

《计算机图形学》课程设计教学大纲作者:孟芸审核:李印清课程代码:课程名称:《计算机图形学》课程设计英文名称:Course Exercise in Computer Graphics课程类型: (选修课、必修课、公共选修课、专业基础课、专业选修课等等)总学时:1周讲课学时:实验学时:学分:1分一、课程说明(一)课程设计书写规范1.题目内容及要求2.设计思路---工作原理图、功能规划3.具体实现---类设计、功能设计、关键代码4.运行调试与分析讨论---给出运行屏幕截图,分析运行结果,改进想法。

5.设计体会与小结---设计遇到的问题及解决办法,通过设计学到了哪些新知识,巩固了哪些知识,有哪些提高。

6.参考文献(必须按标准格式列出)7.报告按规定排版打印,要求装订平整,否则要求返工;(二)课程设计报告的装订顺序封面---任务书---中文摘要---目录----绪论----正文----设计小结----参考文献----附录等(三)课程实际时间10周-16周(四)要求课程设计论文页数控制在20页以内。

每个题目每班只可以允许一组人选(第一题除外)。

(五)适用专业计算机科学技术、网络工程二、题目要求:(一)简易图形编辑软件(1~4人)(可以有四组人选则)1.编写一个简易图形编辑软件,可以是一个应用程序,也可以是基于WEB环境,主要功能有:2.具有菜单,通过菜单执行各种操作;3.采用图元的扫描转换算法绘制各种基本图元,如直线、圆、圆弧、多边形;4.实现图形的平移、缩放、旋转、对称、错切及组合变化;5.能够拾取图形,并修改所选的图形的颜色、线型等;6.能够采用各种算法填充多边形、圆、扇形区域;7.能够采用各种算法实现直线裁剪或多边形裁剪;8.能够绘制各种样条曲线。

9.能够绘制三维图形的投影图,包括:三视图、轴侧图、透视图;10.能够绘制分形图形,例如,Koch 雪花曲线、Bracketed L系统等;11.能够实现重做与撤销;12.能够保存和打开图形文件。

计算机图形学课程设计

计算机图形学课程设计

目录一、课程设计任务及要求 (1)二、需求分析 (1)2.1 设计目标 (1)2.2 设计环境 (2)2.2.1 VC++6.0 (2)2.2.2 MFC (2)2.3 设计题目及要求 (2)三、总体设计 (3)3.1 绘图 (3)3.1.1 直线 (3)3.1.2 正三角形 (4)3.1.3 矩形 (4)3.2 变换类型 (5)3.2.1 平移变换 (5)3.2.2 比例变换 (6)3.2.3 旋转变换 (6)3.2.4 反射变换 (6)3.2.5 错切变换 (7)3.3 复位 (7)四、详细设计 (8)4.1 平移变换 (8)4.1.1 向左 (8)4.1.2 向右 (8)4.1.3 向上 (9)4.1.4 向下 (10)4.2 比例变换 (11)4.2.1 放大 (11)4.2.2 缩小 (12)4.3 旋转变换 (12)4.3.1 逆时针 (12)4.3.2 顺时针 (13)4.4 反射控制 (14)4.4.1 X轴 (14)4.4.2 Y轴 (15)4.4.3 原点 (15)4.5 错切变换 (16)4.5.1 X正方向 (16)4.5.2 X负方向 (17)4.5.3 Y正方向 (17)4.5.4 Y负方向 (18)五、运行调试与分析讨论 (20)六、设计体会与小结 (20)七、参考文献 (21)计算机图形学课程设计一、课程设计任务及要求利用VC++设计实现二维图形变换:1、学会使用VC++和MFC编写实现图形的绘制变换,需包括直线、正三角形、矩形的绘制和变换2、建立图形信息输入窗口,来输入图形的几何信息、拓扑信息和属性信息等3、建立图形变换参数输入窗口,来输入图形的基本几何变换参数4、熟练掌握平移变化、比例变换、、旋转变化、反射变换和错切变换。

5、其他功能:如复位、退出功能。

二、需求分析计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。

计算机图形学课程设计模板

计算机图形学课程设计模板

计算机图形学课程设计
姓名:
学号:
指导老师:
系别:
专业班级:
计算机图形学课程设计任务书
摘要关键词:
目录
第1章概述
1.1 设计概述
1.2 系统环境
第2章总体设计
第3章功能实现
3.1程序运行结果分析
3.2 程序运行结果截图
第4章设计总结
参考文献
说明:
1)以上各章节内容的分配只做参考,允许改动
2)格式要求
一级标题:居中,小二号,黑体
二级标题:靠左,小三号,黑体
正文:五号宋体,可以适当调节行距
[1] 作者. . 析出文献题名[A].论文集名
.书名[M].版本(第一版不写)..文献题名[D].保存地点:[5] 作者. 文献题名[R].。

计算机图形学课程设计作品

计算机图形学课程设计作品

《计算机图形学Visual c++版》考试作业报告题目:计算机图形学图形画板专业:推荐IT学长淘宝日用品店530213班级:推荐IT学长淘宝日用品店530213学号:推荐IT学长淘宝日用品店530213姓名:推荐IT学长淘宝日用品店530213指导教师:推荐IT学长淘宝日用品店530213 完成日期:2015年12月2日一、课程设计目的本课程设计的目标就是要达到理论与实际应用相结合,提高学生设计图形及编写大型程序的能力,并培养基本的、良好的计算机图形学的技能。

设计中要求综合运用所学知识,上机解决一些与实际应用结合紧密的、规模较大的问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握计算机图形学基本知识和算法设计的基本技能术,掌握分析、解决实际问题的能力。

通过这次设计,要求在加深对课程基本内容的理解。

同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。

二、设计内容推荐IT学长淘宝日用品店530213设计一个图形画板,在这个图形画板中要实现:1,画线功能,而且画的线要具备反走样功能。

2, 利用上面的画线功能实现画矩形,椭圆,多边形,并且可以对这些图形进行填充。

3,可以对选中区域的图形放大,缩小,平移,旋转等功能。

三、设计过程程序预处理:包括头文件的加载,常量的定义以及全局变量的定义#include "stdafx.h"#include "GraDesign.h"#include "GraDesignDoc.h"#include "GraDesignView.h"#include "math.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif//******自定义全局变量int type = -1;CPoint point1;CPoint point2;CPoint temp[2];CPoint remember;int i = 0;///////////////////////////////////////////////推荐IT学长淘宝日用品店530213//////////////////////////////// CGraDesignViewIMPLEMENT_DYNCREATE(CGraDesignView, CView)BEGIN_MESSAGE_MAP(CGraDesignView, CView)//{{AFX_MSG_MAP(CGraDesignView)ON_WM_LBUTTONDOWN()ON_WM_LBUTTONUP()ON_COMMAND(line, Online)ON_COMMAND(rectangle, Onrectangle)ON_COMMAND(ellipse, Onellipse)ON_COMMAND(polygon, Onpolygon)ON_COMMAND(fill, Onfill)ON_WM_RBUTTONDOWN()ON_COMMAND(tobig, Ontobig)//}}AFX_MSG_MAP// Standard printing commandsON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)END_MESSAGE_MAP()////////////////////////////推荐IT学长淘宝日用品店530213/////////////////////////////////////////////////// CGraDesignView construction/destructionCGraDesignView::CGraDesignView(){// TODO: add construction code here}CGraDesignView::~CGraDesignView(){}BOOL CGraDesignView::PreCreateWindow(CREATESTRUCT& cs){// TODO: Modify the Window class or styles here by modifying// the CREATESTRUCT csreturn CView::PreCreateWindow(cs);}/////////////////////////////////////////////////////////////////////////////// CGraDesignView drawingvoid CGraDesignView::OnDraw(CDC* pDC){CGraDesignDoc* pDoc = GetDocument();ASSERT_V ALID(pDoc);// TODO: add draw code for native data here}/////////////////////////////////////////////////////////////////////////////// CGraDesignView printingBOOL CGraDesignView::OnPreparePrinting(CPrintInfo* pInfo){// default preparationreturn DoPreparePrinting(pInfo);}void CGraDesignView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) {// TODO: add extra initialization before printing}void CGraDesignView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) {// TODO: add cleanup after printing}/////////////////////////////////////////////////////////////////////////////// CGraDesignView diagnostics#ifdef _DEBUGvoid CGraDesignView::AssertValid() const{CView::AssertValid();}void CGraDesignView::Dump(CDumpContext& dc) const{CView::Dump(dc);}CGraDesignDoc* CGraDesignView::GetDocument() // non-debug version is inline{ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CGraDesignDoc)));return (CGraDesignDoc*)m_pDocument;}#endif //_DEBUG推荐IT学长淘宝日用品店530213画直线:RunLine函数绘制任意斜率的直线,并且添加反走样算法,通过OnLButtonDown,OnLButtonUp函数记录鼠标的点击位置//************画线函数***********************void CGraDesignView::RunLine(CPoint CP0, CPoint CP1){CDC *pDC=GetDC();CPoint p,t;int x,y;double e,k,e1;x=CP1.x-CP0.x;//斜率无穷if(x==0){if(CP0.y>CP1.y){t=CP0;CP0=CP1;CP1=t;}p=CP0;while(p.y<CP1.y+1){pDC->SetPixelV(p,RGB(0,0,0));p.y++;}}else{y=CP1.y-CP0.y;k=double(y)/double(x);//斜率0至1if(k>=0 && k<1){//比较两个点中X轴坐标的大小if(CP0.x>CP1.x){t=CP0;CP0=CP1;CP1=t;}p=CP0;x=CP1.x-CP0.x;y=CP1.y-CP0.y;//画反走样k=double(CP0.y-CP1.y)/(CP0.x-CP1.x);e=k;while(p.x<CP1.x+1){e1=1-e;//反走样画两个像素点pDC->SetPixelV(p.x,p.y,RGB(e*255,e*255,e*255));pDC->SetPixelV(p.x,p.y+1,RGB(e1*255,e1*255,e1*255));p.x++;e=e+k;if(e>=1){e--;p.y++;}}}//斜率大于1if(k>=1){if(CP0.y>=CP1.y){t=CP0;CP0=CP1;CP1=t;}p=CP0;x=CP1.x-CP0.x;y=CP1.y-CP0.y;k=double(CP0.y-CP1.y)/(CP0.x-CP1.x);e=1/k;while(p.x<CP1.x+1){e1=1-e;pDC->SetPixelV(p.x,p.y,RGB(e*255,e*255,e*255));pDC->SetPixelV(p.x+1,p.y,RGB(e1*255,e1*255,e1*255));p.y++;e=e+1/k;if(e>=1){e--;p.x++;}}}//斜率-1至0if(k<0 && k>-1){if(CP0.x>CP1.x){t=CP0;CP0=CP1;CP1=t;}p=CP0;x=CP1.x-CP0.x;y=CP1.y-CP0.y;k=double(CP0.y-CP1.y)/(CP0.x-CP1.x);e=k;while(p.x<CP1.x+1){e1=1-e;pDC->SetPixelV(p.x,p.y,RGB(e*255,e*255,e*255));pDC->SetPixelV(p.x,p.y-1,RGB(e1*255,e1*255,e1*255));p.x++;e=e-k;if(e>=1){e--;p.y--;}}}//斜率小于等于-1if(k<=-1){if(CP0.y<CP1.y){t=CP0;CP0=CP1;CP1=t;}p=CP0;x=CP1.x-CP0.x;y=CP1.y-CP0.y;k=double(CP0.y-CP1.y)/(CP0.x-CP1.x);e=-1/k;while(p.y>CP1.y-1){e1=1-e;pDC->SetPixelV(p.x,p.y,RGB(e*255,e*255,e*255));pDC->SetPixelV(p.x+1,p.y,RGB(e1*255,e1*255,e1*255));p.y--;e=e-1/k;if(e>=1){e--;;p.x++;}}}}}推荐IT学长淘宝日用品店530213void CGraDesignView::Onrectangle(){type = 2;}画矩形:利用画线功能通过实现RunRectangle函数画出矩形//***************画矩形函数****************************void CGraDesignView::RunRectangle(CPoint CP0, CPoint CP1){CDC *pDC=GetDC();CPoint CP2,CP3;//0 1 在同一对角线,2和1在垂直方向,0 3在竖直方向CP2.x=CP1.x;CP2.y=CP0.y;CP3.x=CP0.x;CP3.y=CP1.y;//**********利用前面的功能画4条边************************** RunLine(CP0,CP2);RunLine(CP0,CP3);RunLine(CP1,CP2);RunLine(CP1,CP3);}void CGraDesignView::Onellipse(){type = 3;}画椭圆:利用画线功能通过实现RunEllipse函数画出椭圆//***************画椭圆函数****************************void CGraDesignView::RunEllipse(CPoint CP0, CPoint CP1){CDC *pDC=GetDC();CRect rect;GetClientRect(&rect);pDC->SetMapMode(8);pDC->SetWindowExt(rect.Width(),rect.Height());pDC->SetViewportExt(rect.Width(),-rect.Height());pDC->SetViewportOrg((CP0.x+CP1.x)/2,(CP0.y+CP1.y)/2);////////////////建立坐标轴//////////////////////double a,b,d,d2,a2,b2;CPoint p,p0;int endx,endy;a=abs(CP0.x-CP1.x)/2;b=abs(CP0.y-CP1.y)/2;a2=a*a;b2=b*b;endx=(int)(a2/sqrt(a2+b2));d=b2-b*a2+0.25*a2;p.x=0;p.y=(long)b;if(CP0.y == CP1.y){RunRectangle(CP0,CP1);}else{while(p.x<endx){pDC->SetPixelV(p,RGB(0,0,0));pDC->SetPixelV(p.x,-p.y,RGB(0,0,0));pDC->SetPixelV(-p.x,p.y,RGB(0,0,0));pDC->SetPixelV(-p.x,-p.y,RGB(0,0,0));if(d>=0){d=d+2*b2*p.x-2*a2*p.y+3*b2+2*a2;p.y--;}else {d=d+2*b2*p.x+3*b2;}p.x++;}d2=b2*(p.x+0.5)*(p.x+0.5)+a2*(p.y-1)*(p.y-1)-a2*b2;while(p.y>=0){pDC->SetPixelV(p,RGB(0,0,0));pDC->SetPixelV(p.x,-p.y,RGB(0,0,0));pDC->SetPixelV(-p.x,p.y,RGB(0,0,0));pDC->SetPixelV(-p.x,-p.y,RGB(0,0,0));p.y--;if(d2<0){d2=d2+2*b2*p.x-2*a2*p.y+2*b2+3*a2;p.x++;}else{d2=d2-2*a2*p.y+3*a2;}}}}void CGraDesignView::Onpolygon(){type = 4;}void CGraDesignView::Onfill(){type = 5;}画多边形:利用画线功能通过鼠标左键函数OnLButtonDown取点,用鼠标右键函数OnRButtonDown实现回到原点CPoint temp[2];CPoint remember;int i = 0;//多边形1if(4 == type){i++;temp[i%2] = point;if(1==i) { remember = temp[i]; return; }RunLine(temp[i%2],temp[(i+1)%2]);}//画多边形,按鼠标右键结束,并自动连接起始点,数据清零RunLine(temp[i%2],remember);i=0;temp[0].x=0;temp[0].y=0;temp[1].x=0;temp[1].y=0;CView::OnRButtonDown(nFlags, point);填充:通过实现RunFill函数实现填充CPoint stack[1000000];void CGraDesignView::RunFill(CPoint point){CPoint p;int top;COLORREF r;CClientDC dc(this);top=0;stack[top]=point;top++;while(top!=0){top--;p=stack[top];r=dc.GetPixel(p);if(r != RGB(255,255,255)) continue;dc.SetPixelV(p,RGB(0,255,0));r=dc.GetPixel(p.x+1,p.y);if(r == RGB(255,255,255) && r!=RGB(0,255,0)){stack[top].x=p.x+1;stack[top].y=p.y;top++;}r=dc.GetPixel(p.x-1,p.y);if(r == RGB(255,255,255) && r!=RGB(0,255,0)){stack[top].x=p.x-1;stack[top].y=p.y;top++;}r=dc.GetPixel(p.x,p.y+1);if(r == RGB(255,255,255)&& r!=RGB(0,255,0)){stack[top].x=p.x;stack[top].y=p.y+1;top++;}r=dc.GetPixel(p.x,p.y-1);if(r == RGB(255,255,255) && r!=RGB(0,255,0)){stack[top].x=p.x;stack[top].y=p.y-1;top++;}}}void CGraDesignView::Ontobig(){type = 6;}推荐IT学长淘宝日用品店5302131.需求分析本程序将实现多功能画板的功能:1,画线功能,而且画的线要具备反走样功能。

计算机图形学课程设计

计算机图形学课程设计

计算机图形学课程设计计算机图形学是计算机科学领域的一个重要分支,主要研究如何利用计算机生成、显示和操作图形图像的方法和技术。

在现代社会中,计算机图形学的应用已经相当广泛,包括动画制作、游戏开发、虚拟现实等领域。

因此,学习计算机图形学课程对于计算机相关专业的学生来说至关重要。

一、课程介绍计算机图形学课程主要包括基本概念、算法原理、图形学编程等内容。

学生将学习到图形学基础知识,掌握计算机图形学的基本原理和算法,培养图形图像处理的能力。

通过实际的编程项目,学生将能够将所学知识应用到实际项目中,提高自己的编程能力和创造力。

二、课程内容1. 图形学基础知识:包括图形学的定义、发展历史、基本概念和术语等;2. 图形学算法原理:学习常见的图形学算法,如光栅化、三维变换、光照模型等;3. 图形学编程实践:通过编程实践项目,实现简单的图形图像处理功能,加深对图形学原理的理解;4. 课程设计项目:进行一个综合性的课程设计项目,结合所学知识完成一个小型的图形学应用程序。

三、课程设计要求1. 熟悉图形学的基本知识和算法原理;2. 掌握图形学编程的基本技能,能够独立完成简单的图形学编程任务;3. 完成课程设计项目,提出合理的设计方案,实现自己的想法,并能够进行有效的展示和演示。

四、课程评估方式1. 平时成绩:包括上课表现、作业完成情况、参与讨论等;2. 期中考试:考察学生对于基本概念和算法原理的理解;3. 课程设计项目成绩:综合考察学生的综合能力和创造力;4. 期末综合考试:考察学生对于整个课程知识体系的掌握程度。

五、课程设计的意义和价值计算机图形学课程设计是对所学知识的一个综合应用和实践,通过设计和实现一个完整的图形学应用程序,学生将会提高自己的创造力和动手能力,培养解决实际问题的能力。

同时,课程设计项目也是对学生综合能力的一个考察和锻炼,能够提高学生的编程技能和团队协作能力,为将来从事相关行业打下坚实的基础。

综上所述,计算机图形学课程设计是一门非常重要的课程,通过学习这门课程,学生将能够掌握计算机图形学的基本原理和算法,提高自己的编程能力和创造力,为将来的职业发展奠定良好的基础。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2、主要运行库函数
OpenGL 技术:OpenGL(Open Graphics Library)是一个优秀的三维图形 硬件接口,实际上是一个维图形和模型库。使用 OpenGL 可以绘制出真实感 很强的三维图形,且由于越来越多的高档加速卡支持 OpenGL,所以使用 OpenGL 绘图可以获得很快的执行速度。OpenGL 是一个与硬件无关的图形编 程接口,可以在不同的硬件平台上实现。OpenGL 最初目的是将用户从具体 的硬件环境的操作系统中解放出来,而可以完全不到理解这些系统的结构 和指令系统。 OpenGL 本身不提供高级的造型命令,而是通过基本的几何图元---点, 线和多边形来建 立几何模型。用户则是通过这些基本图元来建立高级的几 何模型。OpenGL 可以提供的功能主要包括: (1) 图形绘制。 (2) 充换操作 (3) 颜色模式 (4) 图像越转越大 (5) 位图和图像
课程设计(论文)任务书
软 件 学 院 学 院 10 软件 +桥梁 专 业 1 班
一、课程设计(论文)题目
转动的彩色立方体
二、课程设计(论文)工作自 2013 年 7 月 1 日起至 2013 年 7 月 5 日止。 三、课程设计(论文) 地点: 软 件 学 院 实 训 中 心 四、课程设计(论文)内容要求: 1.本课程设计的目的 计算机图形学课程设计是计算机图形学课程中的知识、技术和技能的一个综合应 用, 是培养图形软件开发能力的综合训练。通过课程设计,使学生更深入地理解和掌 握计算机图形学理论与相关算法,巩固课内所学的知识、技术和技能,进一步提高图 形软件开发的能力。为毕业设计和毕业后从事计算机绘图、计算机辅助设计、辅助教 学、辅助工程、图形处理等打下基础。 2.课程设计的任务及要求 1)课程设计任务: 绘制一个转动的彩色立方体: 1、绘制一个不停转动的立方体,通过键盘的方向控制旋转方向; 2、实现立方体的纹理映射,为立方体的六个面分别贴上不同的纹理; 3、利用消影技术,实验立方体表面的遮挡关系; 4、具有比较好的动画效果,消除闪烁现象。 2)创新要求: 小三角形的透视效果 3)课程设计论文编写要求 (1)课程设计任务及要求 (2)设计思路--工作原理、功能规划 (3)详细设计---数据分析、算法思路、功能实现(含程序流程图、主要代码及注 释)、界面等。 (4)运行调试与分析讨论---给出运行屏幕截图,分析运行结果,有何改进想法等。 (5)设计体会与小结---设计遇到的问题及解决办法,通过设计学到了哪些新知识, 巩固了哪些知识,有哪些提高。 (6)参考文献(必须按标准格式列出,可参考教材后面的参考文献格式) (7)报告按规定排版打印,要求装订平整,否则要求返工; (8) 课设报告的装订顺序如下: 封面---任务书---中文摘要---目录----正文---附录
计算机图形学课程设计
(代码及相关图片) (9)严禁抄袭,如有发现,按不及格处理。 4)课程设计评分标准: (1)学习态度:10 分; (2)系统设计:20 分; (3)编程调试:20 分; (4)回答问题:20 分; (5)论文撰写:30 分。 5)参考文献: ( 1)陆枫 何云峰 . 计算机图形学基础(第 2 版) [M]. 电子工业出版社 ( 2)张曦煌 杜俊俐 . 计算机图形学[M]. 北京邮电大学出版社 ( 3)孙家广 . 计算机图形学[M]. 清华大学出版社 . 6)课程设计进度安排 1.准备阶段(4 学时) :选择设计题目、了解设计目的要求、查阅相关资料 2.程序模块设计分析阶段(4 学时) :程序总体设计、详细设计 3.代码编写调试阶段(8 学时) :程序模块代码编写、调试、测试 4.撰写论文阶段(4 学时) :总结课程设计任务和设计内容,撰写课程设计论文
第 2页
李亚:计算机图形学
(6) 纹理映射 (7) 良好的动画效果
3、设备要求:
硬件:CPU 内存 128M 显示卡:支持 OpenGL 硬盘空间:20G P3 533
4、运行环境:
�Windows7 旗舰版系统; �Visual C++6.0 (添加 glut-3.7.6-bin 库函数) 。
第3 页
#include<stdio.h> #include <windows.h> //在 Windows 系统中,会包含 Windows.h 部分
#include <glut.h> //使用窗口管理,调用此函数 int iPointNum = 0; //已确定点个数 int x1=0,x2=0,y1=0,y2=0,z1=0,z2=0; //确定点坐标 int winWidth = 5000, winHeight = 5000; GLfloat step=0.0,s=0.1; //设置步长 static GLfloat p1[]={1,-1,-1},//边表信息 p2[]={1,1,-1},p3[]={1,1,1}, p4[]={1,-1,1},p5[]={-1,-1,1}, p6[]={-1,1,1},p7[]={-1,1,-1}, p8[]={-1,-1,-1}; static GLfloat m1[]={1.0,0.0,0.0}, m2[]={-1.0,0.0,0.0},m3[]={0.0,1.0,0.0}, m4[]={0.0,-1.0,0.0},m5[]={0.0,0.0,1.0}, m6[]={0.0,0.0,-1.0}; static GLfloat c1[]={0.0,0.0,1.0}, c2[]={0.0,1.0,1.0},c3[]={1.0,1.0,1.0}, c4[]={1.0,0.0,1.0},c5[]={1.0,0.0,0.0}, c6[]={1.0,1.0,0.0},c7[]={0.0,1.0,0.0}, c8[]={1.0,1.0,1.0}; void Initial(void) //初始化空间 {glClearColor(1.0f,1.0f,1.0f,1.0f);//窗口颜色设置 }
用户终止
图 1 程序流程图
第 4页
李亚:计算机图形学
四、详细设计
总的来说分为三部分:第一部分为 OPENGL 的初始化、初始化窗口大小 及定义相关变量和常量(统称为开始部分) ;第二部分为:设计被调用函数 部分;第三部分为主题函数部分。
第一部分:开始部分
这部分的主要工作是引入 OpenGL 核心库以及其他需要使用的库的头文 件。此外,由于 OpenGL 没有包含窗口系统,因此需要通过设置头文件引入 窗口系统(详情见下面的代码注释) 。还有定义相关变量及常量,
二、需求分析
1、绘制一个转动的彩色立方体:
(1)、绘制一个不停转动的立方体,通过键盘的方向控制旋转方向; (2)、 实现立方体的纹理映射, 为立方体的六个面分别贴上不同的纹理; (3)、利用消影技术,实验立方体表面的遮挡关系; (4)、具有比较好的动画效果,消除闪烁现象; (5)、用 C++实现; (6)、友好性:界面要友好; (7)、可读性:源程序代码清晰、有层次; (8)、当鼠标离屏幕中心的位置远近可以决定立方体旋转速度的快慢。
第5 页
//设置窗口高度和大小
计算机图形学课程设计
完成了上述步骤后,开始进入下一环节
第二部分:设计被调用函数部分
(1)首先使用 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 清除屏幕和深度缓存,绘制立方体(使用每 4 个连续的顶点定义一个四边形 的"填充图元-GL_QUANS") 开始绘制顶点程序如下: void DrawColorBox(void) { glBegin(GL_QUADS); glNormal3fv(m1); glColor3fv(c1);glVertex3fv(p1);//彩色 3fv (C1) ; 顶点 3fv (P1) ; glColor3fv(c2);glVertex3fv(p2); glColor3fv(c3);glVertex3fv(p3); glColor3fv(c4);glVertex3fv(p4); glNormal3fv(m2); glColor3fv(c5);glVertex3fv(p5); glColor3fv(c6);glVertex3fv(p6); glColor3fv(c7);glVertex3fv(p7); glColor3fv(c8);glVertex3fv(p8); glNormal3fv(m5); glColor3fv(c5);glVertex3fv(p5); glColor3fv(c6);glVertex3fv(p6); glColor3fv(c4);glVertex3fv(p4); glColor3fv(c3);glVertex3fv(p3); glNormal3fv(m6); glColor3fv(c1);glVertex3fv(p1); glColor3fv(c8);glVertex3fv(p8); glColor3fv(c7);glVertex3fv(p7); glColor3fv(c2);glVertex3fv(p2); glNormal3fv(m3); glColor3fv(c2);glVertex3fv(p2);
学生签名: ห้องสมุดไป่ตู้013 年 7 月 1 日
课程设计(论文)评审意见
(1)学习态度(10 分) :优( (2)系统设计(20 分) :优( (3)编程调试(20 分) :优( (4)回答问题(20 分) :优( (5)论文撰写(30 分) :优( ) 、良( ) 、良( ) 、良( ) 、良( ) 、良( ) 、中( ) 、中( ) 、中( ) 、中( ) 、中(
李亚:计算机图形学
一、课程设计任务及要求
绘制一个转动的彩色立方体: 1、 绘制一个不停转动的立方体,通过键盘的方向控制旋转方向; 2、 实现立方体的纹理映射, 为立方体的六个面分别贴上不同的纹理; 3、 利用消影技术,实验立方体表面的遮挡关系; 4、 具有比较好的动画效果,消除闪烁现象。
相关文档
最新文档