2022年JAVA分形图像生成研究报告.docx
精品学习资源安 徽 农 业 大 学毕 业 论 文<设计)论文题目 基于 JAVA 的分形图像生成技术的争论姓 名 李万奎学号05138047院 系 信息与运算机学院专 业 运算机科学与技术指导老师 魏雅鹛职 称讲师中国· 合肥二 oo九 年 六月欢迎下载精品学习资源欢迎下载精品学习资源课题名称同学姓名安徽农业高校学士学位论文 <设计)开题报告基于 JAVA技术分形图像生成技术的争论课题来源李万奎专业运算机科学与技术学号指导老师05138047欢迎下载精品学习资源欢迎下载精品学习资源指导老师姓名魏雅鹛职讲师称欢迎下载精品学习资源欢迎下载精品学习资源争论内容该课题深化争论了分形理论并基于分形理论生成各种形式的分形图像,使用 Java 进行编程,完成如下功能1.L 系统和 Koch曲线实现图像公里2. 利用 Java 代码编写 L 系统和 Koch 曲线公里3.Java Applet技术处理 Java 代码4. 运行程序显示分形图像欢迎下载精品学习资源欢迎下载精品学习资源争论方案202131 3.20做整体的需求分析并完成开题报告2021321 4.4完成各模块的设计方案202145 5.10分别编写各模块的代码、调试程序、方案实现2021511 5.20 总结毕业设计结果并书写毕业设计说明书2021. 6 月初撰写毕业设计论文欢迎下载精品学习资源欢迎下载精品学习资源特色与创新用Java Applet来处理L系统图像和 Koch曲线分形理论算法, 同时Java技术解决了跨平台的问题;欢迎下载精品学习资源欢迎下载精品学习资源指导老师看法教研室看法欢迎下载精品学习资源学院看法主要领导签名:年 月日欢迎下载精品学习资源目录1 引言 . - 1 -2 设计思想 . - 2 -3 系统的总体设计 . - 3 -3.1 系统分析 -.3. -3.2 系统功能设计 .-.5. -3.3 系统流程设计 .-.5. -4 系统实现 . - 5 -4.1 L 系统算法设计 . - 5 -4.2 KOCH 曲线算法设计 .- 11 -4.3 APPLET 模块设计 . - 14 -5 小结 . - 16 -参考文献 . - 16 -英文摘要 . - 16 -致谢 . - 17 -附录 . - 17 -欢迎下载精品学习资源基于 JAVA 的分形图像生成技术的争论同学: 李万奎指导老师:魏雅鹛 安徽农业高校 信息与运算机学院 合肥 230036>摘要: 分形是描述自然界和非线性系统中不光滑和不规章几何形体的有力工具;大量事实说明,分形广泛存在于自然界,分形涉及的领域已遍及数学、 理、化学、材料科学、生物与医学、地质和地理学、地震和天文学以及运算机科学等;分形的争论既有重要的理论意义,又有广泛的应用价值;分形理论与运算机科学理论的结合为实现图像数据压缩供应了新的途径;其中分形理论包括几种分形算法:字符串替换算法、随机迭代算法、逃逸时间算法、反函数迭代算法、分形插值算法、动力系统迭代等等,使大量复杂的信息资料由“分形理论中最基本运算”进行图像压缩处理,提高运算机信息储存功能,具有重要的理论和经济意义;本课题就是争论分形理论结合Java 技术、 L 系统算法和Koch曲线实现分形图像的生成;关键字: JAVA;分形; L 系统; Koch 曲线1 引言自然界是宇宙万物的总称,是各种物质系统相互作用相互联系的总体,它包括大至宇宙天体的形成演化,小到微观世界中基本粒子的运动;随着牛顿经典力学的创立,爱因斯坦相对论,以及量子力学的进展,人类在自然科学方面已经取得了辉煌的成就;随着天体物理学以及其他相关学科的快速进展,人类已经登上月球,进入太空;人类对微观世界由质点组成的简洁系统的运动规律也有了全面而正确的熟识;尽管如此,假如人们略微留意一下四周环境中发生的大量非线形不行逆现象,就会发觉,人们对这些现象知之甚少,对许多问题甚至于束手无策;当你仰视蔚蓝的天空,常常可以看到天空中漂浮着一团团白云,尽管它的外形是千变万化的,但是假如用不同倍数的望远镜来观看云团 时,它的外形几乎是保持不变,也既是说白云的外形和望远镜的放大倍数无关;1分形理论使人们能以新的观念,新的手段来处理这些难题,透过扑朔迷离的无序的纷乱现象和不规章的外形,揭示隐匿在复杂现象背后的规律,局部和整体之间的本质联系;分形理论在某些学科的成功尝试,极大地激发了科学争论工作者的爱好,他们把分形理论逐步扩展到其它的学科领域,更进一步的促进了分形学的进展;分形作为一门新兴学科,其应用潜力是巨大的,特殊是在运算机模拟方面更是具有很大的有用价值;所以,学习和争论分形,实现分形在实际生活中的应用,都具有确定很强的诱惑力;JAVA 是一种简洁的,面对对象的,分布式的,说明型的,健壮安全的,欢迎下载精品学习资源结构中立的,可移植的,性能优异、多线程的动态语言;同时 java 平台也具有跨平台的功能,使用 Java 语言编写的程序 , 不需要任何改动 , 就可以移植到另一个平台上运行;在 Java Apple 中,可以实现图形绘制、字体和颜色把握、动画和声音的插入、人机交互及网络沟通等功能 .Apple 仍供应各种名为抽象窗口工具箱AWT>的窗口环境开发工具, 但是 AWT的设计是存在缺陷的 , 取而代之的 Swing技术为 Java GUI足见的轻量组建;它们利用用户运算机的GUI 元素, 可以建立标准的图形用户界面, 如窗口、按钮、滚动条等等;目前,在网络上用Applet来生动地出现这些功能越来越多;L 系统通过对植物对象生长过程的体会式概括和抽象,初始状态与描述规章,进行有限次迭代,生成字符进展序列以表现植物的拓扑结构,并对产生的字符串进行几何说明,就能生成特殊复杂的分形图形2 设计思想本争论课题主要的功能是分形图像生成,主要表现为: 第一:分形理论的图像的生成分形的概念是美籍数学家曼德布罗特B.B.Mandelbort>第一提出的 . 它也是当今科学很有影响的,自相像原就和迭代生成原就是分形理论的重要原就;分形形体中的自相像性可以是完全相同, 也可以是统计意义上的相像;对分形的争论极大的赐予人们对自然界想象和熟识;分形争论不断发觉许多美丽的图像,让人联想起现实世界的复杂多变的自然结构,利用的价值就会很高;比较典型的生成分形图像方法,L 系统;L 系统是美国生物学家Aristid LinderMayer于 1968 年提出的 .L 系统的本质是一个重写系统,通过对植物对象生长过程的体会式概括和抽象,初始状态与描述规章,进行有限次迭代,生成字符进展序列以表现植物的拓扑结构,并对产生的字符串进行几何说明,就能生成特殊复杂多变的分行图像. L系统是极其好玩的, 1,这种方法能够生成许多经典的分形,2.用它可以模拟生物外形,特殊是能表达植物的分枝结构;就由于是L 系统本质是一个字符串重写系统,我们把字符串说明成曲线 更精确地说,称作图形 >, 于是只要能生成字符串,也就等于生成了图形;L 系统的工作原理特殊简洁,仅仅是对几个简洁的字符进行操作; L 系统是一个简洁由“ F”,“ +”,“ - ”等字符组成的字符串,串的形成前提是必需具备的条件,并且依据确定的规章替换;欢迎下载精品学习资源母串中的字母“ F”可以被子串替代,这样就完成了一次替换,依此类推,就可以完成 L 系统的迭代;比如:公理: F规章: F-F+F-F第一次迭代: F-F+F-F其次次迭代: F-F+F-F-F-F+F-F+F-F+F-F-F-F+F-F生成原理是 : F表示向前画一条线段;“ +”表示旋转 + N°, “-”表示旋转- N °, 每作用一级 , 所画线段的长度变为上一级的三分之一, 其中 N 表示多少度;从一个初始串 叫做公理 >开头,将变换规章多次作用于其上,最终产生6一个较长的命令串,用它来绘图;作用一次,称作一级order>,一般说来选择的级数不宜太高,通常选2-8 级, 最多 15 级;L 系统细说起来也有如干种,通常指“0L 系统”; 0L 系统可定义为一个三元 组 V, ,P ,设 V 表示“字母表” alphabet>, V* 表示 V 上的全部“ 单词” words> , V* 是一个非空的单词,称作公理axiom> , P 包含于V×V* 是产生规章的有穷集; <见附录 B)因此, 理论上由 L 系统产生的分形曲线 , 又叫 Koch 曲线,同时实际上也是一个无限迭代的过程;其次 用随机 L 系统表示植物分形信息自然界中的物质不是固定不变化的,几乎都是随机的,世界上也不行能又2 种生物是完全一样的,尽管是相同的植物,同样也会存在差异;环境转变了外形变异,为了产生细节上的不同变化,能让植物够逼真,就引入随机L 系统5;随机的 L 系统是有序的四元素集,表达式为: G<V, ,P,> 其中 V, 的意义和三元式一样的; P 是随机的生产规章集, 为函数;欢迎下载精品学习资源3 系统的总体设计3.1 系统分析本课题争论分行理论分形图像技术的争论,现实的外形多种多样,假如都用图片保藏的话,会占用许多空间,同样使用起来也不便利,所以要引用分形图 像,同时分形图像也很形象,使用起来也很便利;功能包括如下几个方面的要求:1、分形的定义组成部分某种方式和整体相像的形体;分形图像的方法许多 种,常见的用的 L 系统、三分康托集、 Julia集、Koch 曲线等等,本课题使用的是 L 系统和 Koch 曲线;2、L 系统的定义和算法,主要随机 L 系统的四元素集3、Koch 曲线的算法主要分三步,第一步:初始图行一条线段;其次步: 将线段的中心三分之一向外折起来;第三步:把其次步的得到的线段连续将该线段三分之一向外折起来,一次下去,无限进行下去就能到一个图像了;4、编写 JAVA语言,利用 Java Applet处理 L 系统和 Koch 曲线的运算方法;依据以上要求,所以这个课题是建立在运算机基础上的;其实现的功能是用户能观看形象化的分形图像,比如植物,曲线等等,都比较逼真,和现实社会会有些差别,但是应用是很便利的也很广泛的,对植物的全面的形象化有了将来的设想,同样对争论植物的人来说是一个很好的助手;欢迎下载精品学习资源分形理论L 系统算法Koch 曲线算法结合 Java技术处理分形算法生成分形图像欢迎下载精品学习资源3.2 系统功能设计图 1 流程图欢迎下载精品学习资源本课题的功能主要分为以下几个方面: 第一:Koch 曲线的算法;Koch 曲线的生成过程是很简洁的,但是Koch 曲线是很复杂的,由于由一个线段无限的迭代,有许多折点,折点也是不能忽视的,这些线段的大小是可以修改的,大小准备分形图像的外形;其次: L 系统的算法;4L 系统其实是一个字符串重写系统,同样L 系统的工作原理也是很简洁的,利用字符串生成各种各样的不同的图行,每一个图形都是符合一个公式的,一个复杂的植物也能用 L 系统生成 ;第三: Java 编程处理分形理论;利用 Java Applet处理 L 系统算法和 Koch 曲线算法,编写程序处理分形理论算法,实现分形图像的生成;欢迎下载精品学习资源3.3 系统流程设计系统的整体流程是:用分形理论L 系统和 Koch 曲线获得分形图像的算法, 然后,利用 Java编写 Applet 程序处理分形理论的算法,最终得到分形图像;由于用到 Java环境,同时也解决了跨平台问题;4 系统实现4.1 L系统算法设计2L 系统主要侧重拓扑植物结构的表达,用抽象的规章描述植物的外形和生长规律, L 系统结构化比较简洁,很简洁现实,而且定义也很简洁;把运算机生成分形图像的算法通常叫做:“迭代”,程序中实现的形式是“递归”调 用,由于递归程序很难用一般的方法来把握它的流程;但是它的优点是算法比较简洁些 ;定义 1假如一个集合在欧氏空间中的Hausdorff 维数D H 恒大于其拓扑维数 D T即D H > D T 就称该集合为 分形集,简称为 分形;定义 2组成部分以某种方式与整体相像的形体叫分形;对于定义 1的懂得需要确定的数学基础,不仅要知道什么是Hausdorff 维数,而且要知道什么是拓扑维数,看起来很抽象,也不简洁推广;定义1.2比较笼统的说明白自然界中的物质只要局部和局部或者局部和整体之间存在自相像性,那么这个物质就是分形;正是这一比较“模糊”的概念被人们普遍接受, 同时也促进了分形的进展;L系统的公理和产生式都是由字符串描述的,并且要使字符串和图形联系起来,就要把每个字符赐予特定的含义;现在接受龟形加以说明;将龟形外形定义为三元素集合 x, y , a >,其中 x, y >是用笛卡儿坐标表示的龟图位置, a 表示龟图的方向,给定步长 d 和角度增量 d ;F d >:向前移一步,步长为d ,龟形外形变为 x', y', a >,其中 x' =x+ d cosa , y' =y + d sin a ,在点 x, y >和x' , y' > 之间画始终线段;+ d >:向左旋转 d ,龟形的下一个状态为 x, y ,a +d >,角的正向为逆时针方向; - d >:向右旋转 d ,龟形的下一个状态为 x, y ,a - d >,角的负向为顺时针方向;L 系统算法的关键在于字符串的生成,其中有许多变量;参数如下:欢迎下载精品学习资源startX:整型变量,起始点的X 坐标位置startY:整型变量,起始点的Y 坐标位置initDirection:整型变量,开头绘画时的初始方向角direction:双精度变量,是角度变化的中间变量,记录当前角度值lengthF :双精度变量,每步步长 即画一条线段的长度 > rotation:双精度变量,作图中的旋转角度startDepth:整型变量,画图迭代次数ruleNumber :整型变量,规章数sStart :字符串变量,公理 即生成元 > sRule:字符串变量,规章数组doublePoint :记录线段的两点 , 由类定义用递归的方法,先入栈、后出栈;入栈aPoint.addElementa>;sDirection = String.valueOfdirection>;aDirection.addElementsDirection>;出栈a=doublePoint>aPoint.elementAtaPoint.size>-1>>;sDirection=String>aDirection.elementAtaDirection.size>-1>>;direction=Double.valueOfsDirection>.doubleValue>;aPoint.removeElementAtaPoint.size>-1>;aDirection.removeElementAtaDirection.size>-1>;然后记录坐标点类:类函数 doublePointdouble x2,double y2>参数: x2 点的 x坐标欢迎下载精品学习资源y2点的 y坐标树的形成:先设置好参数,参数设置不同,形成的图像也不同;图 2 树的参数图 3 树的算法欢迎下载精品学习资源部分代码如下:图 4 生成的树分形图像欢迎下载精品学习资源boolean colorLock=true ;int startX=200 ;/ 起始点int startY=10 ;double initDirection=90 ;/ 作画时的初始方向double direction;/ 中间变量double lengthF=0.3;/ 每步步长double rotation=30;/ 作图中给定的转角int startDepth=10;/ 画图迭代次数int Depth=0;int ruleNumber=2;/ 规章数String sStart;/ 公理;即所要画的字符串String sRule;/规章数组doublePoint a, b Graphics g ;Choice choice;/画线段的两点 , 由类定义java.awt.Choice choice3;Button step;Panel p ;public void init>this.setLayoutnew BorderLayout>>;sRule=new String 62;/ 初始化为 " 树" 规章sStart="X";sRule00="X";欢迎下载精品学习资源sRule01="F+XF-X+X";sRule10="F";sRule11="FF";choice=new Choice> ;choice.addItemListenerthis>;step=new Button"单步执行 ">;step.addActionListenerthis>;p=new Panel> ;p.setLayoutnew FlowLayout>>;p.addstep> ;addp,"South">;this.setSize600,500>; /主窗大小reinit>;再如,树枝的分形图像,第一步先设置参数;图 5 树枝的参数其次步设置树枝算法:欢迎下载精品学习资源图 6 树枝的算法参数欢迎下载精品学习资源4.2 Koch 曲线算法设计图 7 树枝的分形图像欢迎下载精品学习资源Koch 曲线的构造过程主要分为三大步:第一步,给定一个初始图形一条线段;其次步,将这条线段中间的三分之一处向外折起;第三步,依据其次步的方法不断的把各段线段中间的三分之一处向外折起;这样无限迭代的进行下 去,最终就能构造出 Koch 曲线;图 8 Koch 曲线 三次迭代过程欢迎下载精品学习资源欢迎下载精品学习资源图 8 代码如下:图 9 Koch 曲线 最终迭代过程欢迎下载精品学习资源boolean colorLock=true ;int startX=200 ;/ 起始点int startY=2 ;double initDirection=60;/ 作画时的初始方向double direction;/ 中间变量double lengthF=6;/ 每步步长double rotation=60;/ 作图中给定的转角int startDepth=7;/ 画图迭代次数int Depth=0;int ruleNumber=1;/ 规章数String sStart;/ 公理;即所要画的字符串String sRule;/规章数组doublePoint a, b;/画线段的两点 , 由类定义Graphics g ;欢迎下载精品学习资源Choice choice;java.awt.Choice choice3;Button step;Panel p ;public void init>this.setLayoutnew BorderLayout>>;sRule=new String 22;/ 初始化为 " 线段" 规章sStart = "F";sRule00="F";sRule01="F-F+F-F";choice=new Choice> ;choice.addItemListenerthis>;step=new Button"单步执行 ">;step.addActionListenerthis>;p=new Panel> ;p.setLayoutnew FlowLayout>>;p.addstep> ;addp,"South">;this.setSize600,500>; /主窗大小reinit>;第一,它有许多个折点,而且这些折点是不行微的,当然也就没有切线了;其次, Koch曲线在许多方面的性质与三分康托集列出的那些性质类似,它由四个欢迎下载精品学习资源与总体相像的“四分之一”部分组成,但是比例系数是1/3 ;它在任何尺度下的不规章性反映了它的精细结构,但是这样错综复杂的构造却出自于一个基本的简洁结构;现在把图 8 的初始图形改换成三角形,再依据上述的方法进行折叠,那么会得到另外一个分形,也既是Koch 雪花;其他部分分形图像:图 10 环形分形图像图 11 灌木丛分形图像欢迎下载精品学习资源4.3 Applet模块设计本课题用 java Applet处理分行理论的算法,设计Applet主要程序和界面:7package Byapplet; /Byapplet包import java.awt.*;import java.awt.event.*;import java.util.Vector; /java:Vector类可以实现自动增长的对象数组<1. 便利程序可读, 2. 程序直接调用 Vector ,既直接调用你要用的类)import java.util.Date; /java包下 util包下的 Date<日期)这个类import java.applet.Applet;图 12 Applet设计主界面其 中 Test是 主 工 程 , Byapplet是 包 ; Myhuanzhengfangxing.java、Myshu.java、 Myshuzhi.java、 Myxianduan.java、 Myduichenshu、Myguangmucong是显示分形图像的六个 Applet小程序;部分代码:确定起始坐标和起始方向;start=false;g=this.getGraphics>;g.clearRect0,0,517,550>;a=new doublePointstartX,startY>; /起始点direction=initDirection;/起始的方向欢迎下载精品学习资源HuiHuag, sStart, startDepth>;g.finalize>;running=false;储存双精度class doublePoint /为储存双精度的点而新建一个类double x ;double y ;doublePointdouble x1,double y1>x=x1 ;y=y1;5 小结本论文的主要工作与成果:分形是描述自然界和非线性系统中不光滑和不规章几何形体的有力工具, 大量事实说明,分形广泛存在于自然界,分形涉及的领域己遍及数学、物理、化学、材料科学、表面科学、生物与医学、地质和地理学、地震和天文学以及运算机科学等;分形的争论既有重要的理论意义,又有广泛的应用价值;由于用到 Java 技术,同时也解决了跨平台的问题;参考文献1 JAVA编程思想 第 4 版>作者: 美>BRUCE ECKEL,译者:陈昊鹏 , 出版日期: 2007-6-1,出版 社:机械工业出版社2 曾文曲 . 植物的枝的分形算法 .分形理论与分形的运算机模拟.3 王方石 . L- 系统在植物模拟中的作用. 北京 : 北方交通高校学报,1998.6第三期 , 第22 卷4L-System Explorer. Last updated December 28, 2003 at 21:34:45.5 Inducible expression of the 2-5A synthetase/RNase L system results in inhibition of vaccinia virus replication.欢迎下载精品学习资源Diaz-Guerra M, Rivas C, Esteban M. CSIC, Campus Universidad Autonoma, Madrid, 28049, Spain.6 RNase L system results in inhibition of vaccinia virus replication.7 API Specification of J2SE Version 1.5 中文版 >. Sun Microsystems, 2004英文摘要JAVA-based fractal image generation technology and researchandnetwork transmissionAuthor: Li Wankui Tutor:Wei YameiSchool of Information & Computer, Anhui Agricultural University,Anhui, 230036>Abstract:To describe the nature of fractal and non-linear system is not smooth and irregular geometry of a powerful tool. A large number of facts show that there is a wide range of fractal innature, involved in the field of fractal mathematics have been all over, science, chemistry, materials science, biology and medicine, geology and geography, seismology and astronomy and computer science. Fractal research both important theoretical significance, and the value of a wide range of applications. Fractal theory and theoretical computer science for the realization of the combination of image data compression provides a new way. Fractal theory which includes several sub-algorithm: string replacement algorithm, random iteration algorithm, escape time algorithm, inverse function iteration algorithm, fractal interpolation algorithm, iterative dynamical systems, etc., so that a large number of complex information by the "fractal theory, the most basic computing" image compression to improve the computer information storage function, an important theory and economic significance. This issue is to study the theory of fractal Java technology, L system, algorithm and the realization of Koch curve fractal image generation.Key words:Java; Fractal;L-sys