一、前言——美丽的分形图形
分形图形,在自然界中的存在,着实令人感到震撼,那是自然界巧夺天工的美,更让人感叹自然界的奇妙。
这里展示了一张海岸线和一张蕨菜的图片,其中都蕴含着美丽的分形。
自然界中的分形自然是奇妙的,用计算机代码实现的分形,同样令人感慨。
这些美丽的图形,究竟是怎样实现的,而分形又是什么呢?
二、分形的介绍
1、分形的定义
查找了一些资料,关于分形并没有确定的科学定义,应用比较广泛的是科学家曼德勃罗特对分形的定义和英国数学家法尔科内(Kenneth Falconer)仿照生物学家对生命定义的方式来给分形下的定义。
(1)Mandelbrot 定义
定义 1:如果一个集合在欧式空间的豪斯道夫维数(Hausdorff Dimension, DH)严格大于其拓扑维数,则该集合为分形集,简称为分形。其中 DH是分数。
定义 2:整体与局部以某种方式相似的形,称为分形。
两个定义都有很大的局限性,定义 1 排除了为数众多的其豪斯道夫维数为整数但具有明显分形特征的集合。定义 2 强调了分形的重要特征—自相似性,但自相似性只是分形的属性特征之一。
(2)Falconer 定义
法尔科内指出,如果某一集合具有下述所有或大部分性质,那么它就是分形。
(1) 具有精细的结构,即在任意小的尺度下,可以有更小的细节;
(2) 具有不规则性,无论从整体还是局部观察,都无法用微分或者传统的几何语言来描述;
(3) 本身的结构通常在大小尺度上具有某种自相似的性质;
(4) 分形维数大于拓扑维数;
(5) 在多数情况下,可以由迭代方法产生。
2、分形的特征
关于分形,并没有很准确的定义,但是分形却有其独特的特征。
(1)自相似性
我认为这是分形最主要的特征。
自相似性是指:分形对象的局部经过放大后与整体相似,或者整体经过缩小后可以和局部重合的一种性质。
如图,这是Sierpinski 三角垫片的自相似。
如图,这是分形树的自相似。
(2)无标度性
无标度性是指对分形对象的任何局部区域进行放大或缩小,它的形态、复杂程度、不规则性等都不发生变化的特性。
也就是说,用不同尺度去观察对象时,所看到的图案细节都是一样的,而与观察的尺度(或标度)无关。
无标度性与自相似性存在一定的关系,具有标度不变性的对象必定满足自相似性质。也可以认为,这类研究对象没有特征尺度,即无法用空间中的长度、面积、体积和时间中的秒、分、时等来描述。自相似性仅存在于具有标度不变性的一段区间范围内,如果超出这个区间就没有自相似性,分形也就不存在了。
(3)自仿射性
自仿射性是自相似性的一种拓展和延伸。如果将自相似性看成是局部到整体在各个方向上的等比例变换的结果的话,那么,自仿射性就是局部到整体在不同方向上进行不等比例变换的结果。前者称为自相似变换,后者称为自仿射变换,由此可以知道,自相似性变换是自仿射性变换的特例。
3、分形的应用
分形的应用可谓是非常广泛,涉及到自然科学、工程技术、材料科学、图案设计、社会经济等领域。越来越多的人关注分形,人们运用分形成功的解决了许多其他方法难以解决的问题。
三、L-System(L系统)简介
1、L系统的简单介绍
L系统是分形理论的重要分支。
林氏系统(通常称L系统)是林德梅叶1968年为模拟生物形态而设计的,后来史密斯于1984年 、普鲁辛凯维奇于1986年,分别将它应用于计算机图形学,引起生物学界和计算机界人士极大兴趣,一时发表了许多论文和专著。L系统实际上是字符串重写系统。我们把字符串解释成曲线(或者更准确地说,称作图形), 于是只要能生成字符串,也就等于生成了图形。L系统的工作原理非常简单,仅仅是对几个简单的字符进行操作。L系统是一个简单由“F”,“+”,“-”等字符组成的字符串,串的形成前提是必须具备“种子”,并且
按照一定的规则替换。母串中的字母“F”可以被子串替代,这样就完成了一次替换,依此类推,就可以完成L系统的迭代。
2、L系统中的基本概念
(1)重写(rewriting):L-系统的本质就是对字符串进行重写,首先定义字符串集合,设置初始字符串和替代规则(即产生式),然后根据产生式对初始字符串不断的替代。每一步对每一个字符的替代都是并行的,所有字符串同时进行替代。
(2)字符表(Alphabet):即是字符串集合,L-系统中所有赋予不同意义的字符,用字母 V 表示。
(3)公理(Axiom):又称初始元(initiator)是由字符表中的字符构成的字符串,用符号 ω 表示。例如 V={A、B、C},那么 AB、ABC、AABBC 等都是一些字符串粒子。
(4)字长(Length):是公理 ω 中所包含的字符个数,用|ω|表示。
(5)产生式(Productions):解释为改写规则(rewriting rules),是指从字符 a∈V到字符 ω 的变换。表示为:P:a→ω,ω 可以是 a 本身,也可以是空字(empty word),用符号 φ 表示。
3、L系统的基本构图原理
上述的L系统基本概念可能有些晦涩难懂,这里用一个简单的小例子(Koch曲线),来进一步说明L系统的基本构图原理。
计算机实现过程,是很简单的,首先通过生成字符串,来遍历字符串的每一个字母,对应的字母代表一种含义,然后可以将含义告诉计算机,让计算机遍历字符串的时候执行字符对应动作,这样就可以了。而字符的生成过程,如图所示:
如上图就是字符生成过程,我们可以在实现过程中,可以在字符串数组中先保存一个'F',然后遍历数组,然后再取得每一个字母,对应生成其所对应的字符串,那么就可以形成数组中的下一个元素了。
然后在自己的程序中,给每一种字符赋予一种含义,像上面就有三种字符,'F','-','+',那么我们就为这三种字符赋予它的含义,'F'代表向前面走一次,'—'代表逆时针旋转,'+'代表顺时针旋转,等等。你可以自己为他们赋予你自己所想的任何计算机可以执行的动作,然后在后面让计算机遍历数组,得到字符,那么就可以进行我们自己想要的创作了。
为了便于理解,下附Koch 曲线迭代后生成的字符串,和迭代次数为1,2,4时的Koch曲线
如图,为Koch 曲线迭代后生成的字符串。
如图,为迭代次数为1时的Koch曲线
如图,为迭代次数为2时的Koch曲线
如图,为迭代次数为4时的Koch曲线
四、我的用LSystem做的分形小软件
应用程序的界面如图所示:
可以有不同的图案以供选择。
并且可以随意改变参数,如图所示:
其中各参数的含义可以使用帮助按钮:
在整个程序的制作过程中,有参考了很多资料,也有一些自己的想法,希望大家予以建议和指评。
相关推荐
根据W-M的分形函数,生成W-M函数的曲线,请批评指教。
# 构建L-system分形树 ## 一、基本概念### 1、L-system Lindenmayer系统,简称L系统,是由荷兰乌特勒支大学的生物学和植物学家,匈牙利裔的林登麦伊尔(Aristid Lindenmayer)于1968年提出的有关生长发展中的...
基于Matlab复合材料磨损表面形貌W-M分形模型及其模拟的研究涉及到多个专业知识点,包括复合材料磨损表面形貌、W-M分形模型、Matlab编程、分形维数的计算方法以及无标度区的分析等。本文将对这些知识点进行详细阐述。...
《L-System 3.1:探索模型世界的神奇工具》 L-System,全称是“Lindenmayer System”,是一...无论你是生物学家、计算机科学家、艺术家还是对分形几何感兴趣的业余爱好者,L-System 3.1都能为你带来无尽的乐趣和启示。
标题中的“MATLAB_Maragaos-Sun分形维数”指的是使用MATLAB软件进行的一次毕业设计项目,其中涉及到的是Maragaos-Sun分形的维数计算。MATLAB是一种广泛应用于数值计算、数据分析和算法开发的编程环境,特别适合处理...
### 分形初论——分形的初步介绍 #### 一、引言 分形是一种复杂的几何形状或图案,它在各个尺度上都表现出自相似的性质。这种自相似性不仅体现在数学模型上,而且广泛存在于自然界和社会现象之中。本文旨在通过对...
分形,这个概念源于20世纪70年代,由数学家曼德勃罗提出,它是一种具有自相似性、无标度性和复杂性的几何形态。本分形基础课件是为初学者精心设计的,旨在深入浅出地介绍分形理论,帮助学习者建立起对分形的全面认识...
在本项目中,我们主要探讨的是利用Matlab对复合材料磨损表面形貌进行建模和模拟,具体采用了W-M分形模型。W-M分形,全称为Wallace-Mandelbrot分形,是一种广泛应用于复杂几何形状分析和描述的数学工具,尤其在材料...
除了上述特点之外,分形天线阵的设计还能够降低阵列整体的尺寸和规模,这是由于其自相似的特性允许在更小的空间内实现复杂的阵列结构。同时,分形天线阵还能够提供更大的扫描角,这对于提高雷达等电子设备的性能具有...
论文研究-多分形波动率测度的VaR计算模型.pdf, 以上证综指长达6年时间的5分钟高频数据为实证样本,首先提出了一种基于多分形谱(Multifractalspectrum)分析的市场波动率...
JavaScript应用实例-二叉树分形图.js
JavaScript应用实例-经典分形图案Mandelbrot.js
论文研究-基于分形视角下的沪港股市投资组合策略.pdf, 针对已有研究的不足,为满足不同交易周期投资者的实际需求,将分形研究方法与传统投资组合模型相结合,考虑多时间...
东南大学 计算机图形学 作业一 分形算法,opengl实现!!
AutoJs源码-二叉树分形图。本资源购买前提醒:本源码都是实际autojs项目模板,安装好autojs直接运行即可打开。1、支持低版本autojs。2、资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己承担!...
看的见的算法 7个经典应用诠释算法精髓(8)-分形图的绘制:计算机生成艺术 09-Fractal-Drawing 9-1 分形到底是什么鬼.mp4 9-2 递归绘制基础-.mp4 9-3 Vicsek分形图的绘制.mp4 9-4 为分形绘制添加交互.mp4 9-5 ...
论文研究-基于分形特征的我国干旱灾害小波分析.pdf, 小波分析可用于揭示旱灾时序数据的演变规律,这对其早期预警具有重要意义.利用我国近60年的的旱灾成灾率时序数据,在 ...
AutoJs源码-经典分形图案Mandelbrot。本资源购买前提醒:本源码都是实际autojs项目模板,安装好autojs直接运行即可打开。1、支持低版本autojs。2、资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您...
"Python分形景观"这个主题,指的是利用Python编程实现对分形图形的生成,特别是模拟自然景观的分形图像。分形是一种在不同尺度上具有自相似性的几何形状,它们在自然界中无处不在,如山脉、云彩、树枝等都呈现出分形...