计算机图形及可视化课程设计

上传人:好** 文档编号:105748231 上传时间:2019-10-13 格式:DOC 页数:23 大小:406.50KB
返回 下载 相关 举报
计算机图形及可视化课程设计_第1页
第1页 / 共23页
计算机图形及可视化课程设计_第2页
第2页 / 共23页
计算机图形及可视化课程设计_第3页
第3页 / 共23页
计算机图形及可视化课程设计_第4页
第4页 / 共23页
计算机图形及可视化课程设计_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《计算机图形及可视化课程设计》由会员分享,可在线阅读,更多相关《计算机图形及可视化课程设计(23页珍藏版)》请在金锄头文库上搜索。

1、 课程设计 课程名称: 计算机图形学与可视化 学生姓名: 学 号: 专业班级: 指导老师: 院系名称: 课程设计任务书设计题目利用迭代函数系统生成分形图案成绩课程设计主要内容 迭代函数系统(Iteration Function System,简称IFS)是以仿射变换为框架,根据几何对象的整体与局部具有自相似的结构,将总体形状以一定的概率按不同的仿射变换迭代下去,直至得到满意的分型图形。迭代函数系统绘制分形图形有两种方法:确定性迭代算法和随机性迭代算法。本文将以此原理出发,分析分形图形的生成方法,探索一些利用IFS产生丰富的分形图形的简便方法及具体应用。具体内容请看下面的正文。指导教师评语建议:

2、从学生的工作态度、工作量、设计(论文)的创造性、学术性、实用性及书面表达能力等方面给出评价。签名: 20 年 月 日 目录 一系统功能介绍 4 二设计思路 6 三模块图 6 四小组成员及任务分配 7 五主要算法介绍 7 六源代码 8 七程序使用说明 8 八调试结果 8 九总结 14 十参考文献 15 正文:一 系统功能介绍 迭代函数系统(Iteration Function System,简称IFS)最早是由Hutchision在1981年提出的。美国佐治亚理工学院的M F Bamsley等人在SIGGRAMPH88国际会议上对IFS所作的专题报告,使IFS成为分形图像压缩的基础,从而使IFS

3、成为分形图形学最有生命力的领域之一。 迭代函数系统(IFS)是以仿射变换为框架,根据几何对象的整体与局部具有自相似的结构,将总体形状以一定的概率按不同的仿射变换迭代下去,直至得到满意的分形图形。 目前使用的迭代函数系统绘制分形图的算法主要有两种:确定性迭代算法和随机性迭代算法。它们都是通过IFS码进行迭代而产生图形的方法。 确定性迭代算法是通过仿射变换得到的。其基本原理就是找一个初始集,对集上的每一个点,根据给定的仿射变换公式进行数据变换,便可得到新的点集。这样通过多次迭代,便可绘制所需的图形。并且每个图形的局部和整体相似。只要其仿射变换系数相同,即IFS码相同,当迭代次数足够大时,最终生成的

4、图形是相同的。 随机性迭代算法用到了概率,从而可以对图形的细节和颜色进行控制。随机性迭代算法的基本原理就是利用一个给定的IFS码:j=1,2,N(每一个仿射变换对应于一个概率),从任选的一个初始点(,)出发,依据其概率分布,从:j=1,2,N中选择相应的进行仿射变换,可得到新的点(,)。然后再由概率选择相应的进行变换,进而得到新的点(,)。这样反复迭代,便可得到一系列的点(,),(,),(,),。这些点集显示在屏幕上,便得到一个完整的分形图。 分形,又称碎形,通常被定义为“一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状”,即具有自相似的性质。分形思想的

5、根源可以追溯到公元17世纪,而对分形使用严格的数学处理则始于一个世纪后卡尔魏尔施特拉斯、格奥尔格康托尔和费利克斯豪斯多夫对连续而不可微函数的研究。但是分形一词直到1975年才由本华曼德博创造出,来自拉丁文,有“零碎”、“破裂”之意。一个数学意义上分形的生成是基于一个不断迭代的方程式,即一种基于递归的反馈系统。分形有几种类型,可以分别依据表现出的精确自相似性、半自相似性和统计自相似性来定义。虽然分形是一个数学构造,它们同样可以在自然界中被找到,这使得它们被划入艺术作品的范畴。分形在医学、土力学、地震学和技术分析中都有应用。分形一般有以下特质:1、在任意小的尺度上都能有精细的结构;2、太不规则,以

6、至无论是其整体或局部都难以用传统欧氏几何的语言来描述;3、具有(至少是近似的或统计的)自相似形式;4、一般地,其“分形维数”会大于拓扑维数;5、在多数情况下有着简单的递归定义。 因为分形在所有的大小尺度下都显得相似,所以通常被认为是无限复杂的。自然界里一定程度上类似分形的事物有云、山脉、闪电、海岸线、雪片、植物根、多种蔬菜(如花椰菜和西兰花)和动物的毛皮的图案等等。但是,并不是所有自相似的东西都是分形,如实直线虽然在形式上是自相似的,但却不符合分形的其他特质,比如说它能被传统的欧氏几何语言所描述。四个制造分形的一般技术如下:1、逃逸时间分形:由空间(如复平面)中每一点的递推关系式所定义,例如曼

7、德博集合、茹利亚集合、火烧船分形、新分形和李奥普诺夫分形等。由一次或两次逃逸时间公式的迭代生成的二维向量场也会产生分形,若点在此一向量场中重复地被通过。2、迭代函数系统:这些分形都有着固定的几何替代规则。康托尔集、谢尔宾斯基三角形、谢尔宾斯基地毯、空间填充曲线、科赫雪花、龙形曲线、丁字方形、门格海绵等都是此类分形的一些例子。3、随机分形:由随机而无确定过程产生,如布朗运动的轨迹、莱维飞行、分形风景和布朗树等。后者会产生一种称之为树状分形的分形,如扩散限制聚集或反应限制聚集丛。4、奇异吸引子:以一个映射的迭代或一套会显出混沌的初值微分方程所产生。分形也可以依据其自相似来分类,有如下三种:1、精确

8、自相似:这是最强的一种自相似,分形在任一尺度下都显得一样。由迭代函数系统定义出的分形通常会展现出精确自相似来。2、半自相似:这是一种较松的自相似,分形在不同尺度下会显得大略(但非精确)相同。半自相似分形包含有整个分形扭曲及退化形式的缩小尺寸。由递推关系式定义出的分形通常会是半自相似,但不会是精确自相似。3、统计自相似:这是最弱的一种自相似,这种分形在不同尺度下都能保有固定的数值或统计测度。大多数对“分形”合理的定义自然会导致某一类型的统计自相似(分形维数本身即是个在不同尺度下都保持固定的数值测度)。随机分形是统计自相似,但非精确及半自相似的分形的一个例子。应用:医学中组织切片的归类分形风景或海

9、岸线复杂性制作许多的艺术形式地震学土壤力学中的分形电脑及电视游戏设计,尤其是有机背景的CG和部分的过程生成二 设计思路 分形算法:把四面体细分成更小的四面体,先找出其6个棱的中点并连接起来,这样就在4个顶点处各有一个小的四面体,原来四面体中剩下的部分应当去掉。仿效二维的生成方法,我们对保留的四个小四面体进行迭代细分。这样细分结束后通过绘制4个三角形来绘制每一个剩下的四面体。 交互的实现:键盘交互,即通过对按键的响应写上响应函数实现对视图和颜色的改变。 鼠标交互:通过对鼠标左右键的交互。三 模块图四面体分形 键盘响应鼠标响应算法 分形算法按键1、2、3、4切换四面颜色右键视图变换、颜色变换、退出

10、视图方案颜色方案初始标色图形中拾取一点四 小组成员及任务分配:分形算法实现;查找资料:颜色方案、视图方案算法实现;编写课程设计报告:键盘、鼠标响应算法实现;编写课程设计报告五 主要算法介绍分形算法:void tetra(GLfloat *a, GLfloat *b, GLfloat *c, GLfloat *d)函数实现的是绘制四面体并且给四个面绘上不同的颜色。void triangle3(GLfloat *a, GLfloat *b, GLfloat *c)函数用来绘制每个平面细分后的三角形。其中顶点设置为3维坐标glVertex3fv(a);void divide_tetra(GLfloa

11、t *a,GLfloat *b,GLfloat *c,GLfloat *d,int m)细分四面体的函数实现。前四个参数为传入点的坐标,最后参数m则是细分次数。先计算六个中点的坐标mid1j=(aj+cj)/2; 3次循环则是对x,y,z三个坐标的一次计算,然后再递归调用绘制4个小四面体。然后是显示回调函数void mydisplay3FX();分形算法中必要重要的一点是隐藏面的消除。对对象进行排序以正确绘制他们的算法称为可见表面算法,也课称为隐藏面消除算法。这里采用的死Z-缓存算法。在主程序中申请辅助存储器:一个Z(深度)缓存,为此把初始化代码改为glutInitDisplayMode(GL

12、UT_SINGLE|GLUT_RGB|GLUT_DEPTH);递归结束的时候调用函数:glEnable(GL_DEPTH_TEST);算法在深度缓存中存储信息,所以必须在需要重绘的窗口清空这个缓存。为此把函数中的清屏操作改为:glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);键盘交互通过键盘回调函数glutKeyboardFunc(myKeyboard)来调用键盘响应函数,响应事件则在void myKeyboard()中具体实现。分别判断按下的按键的具体值,然后通过改变colors数组的值以及视图函数来改变现实,所用的颜色索引保存在colorCh

13、ange数组之中。鼠标交互:其中用到了鼠标事件(mouse event)和移动事件(move event)然后分别通过回调函数glutMouseFunc(myMouse),glutMotionFunc(myMotion);来调用。代码中对与鼠标单击相应即视角的移动,先通过点击的位置获取点下的坐标,用来判断是否在四面体 内部的函数用glReadPixels(x,500-y,1,1,GL_RGB,GL_FLOAT,pix)来实现。该函数读取点击位置的像素,将获取 的结果存入数组pix在后面的判断算法中如果像素不为0则拾取该图形。该算法的好处是不需要计算复杂的坐标和线段函数而能方便的拾取对象。缺点则是在内部 的白色区域点击不能够拾取图像。具体代码的实实现函数void myMouse(int btn,int state,int x,int y)移动相应函数void myMotion(int x,int y)首先对于移动过程中获取的坐标与全局变量定义的坐标统一数量级。所以

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号