- 1、本文档共26页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
自定义纹理 手工填充颜色 分形展示程序 自定义纹理 手工填充颜色 分形展示程序 自定义纹理 手工填充颜色 分形展示程序 * 有趣的分形 * 分形学历史 三分康托集 1883年,德国数学家康托(G.Cantor)提出了如今广为人知的三分康托集。三分康托集是很容易构造的,然而,它却显示出许多最典型的分形特征。它是从单位区间出发,再由这个区间不断地去掉部分子区间的过程??三分康托集的构造过程构造出来的。 其详细构造过程是:第一步,把闭区间[0,1]平均分为三段,去掉中间的 1/3 部分段,则只剩下两个闭区间[0,1/3]和[2/3,1]。第二步,再将剩下的两个闭区间各自平均分为三段,同样去掉中间的区间段,这时剩下四段闭区间:[0,1/9],[2/9,1/3],[2/3,7/9]和[8/9,1]。第三步,重复删除每个小区间中间的 1/3 段。如此不断的分割下去, 最后剩下的各个小区间段就构成了三分康托集。 * 分形学历史 Koch曲线 1904年,瑞典数学家柯赫构造了 “Koch曲线”几何图形。Koch曲线大于一维,具有无限的长度,但是又小于二维,并且生成的图形的面积为零。它和三分康托集一样,是一个典型的分形。根据分形的次数不同,生成的Koch 曲线也有很多种,比如三次 Koch 曲线,四次 Koch 曲线等。下面以三次 Koch 曲线为例,介绍 Koch 曲线的构造方法,其它的可依此类推。?? 三次Koch曲线的构造过程主要分为三大步骤:第一步,给定一个初始图形——一条线段;第二步,将这条线段中间的 1/3 处向外折起;第三步,按照第二步的方法不断的把各段线段中间的 1/3 处向外折起。这样无限的进行下去,最终即可构造出Koch曲线。其图例构造过程如右图所示(迭代了 6 次的图形)。 * 分形学历史 Julia 集 Julia 集是由法国数学家 Gaston Julia 和 Pierre Faton 在发展了复变函数迭代的基础理论后获得的。Julia 集也是一个典型的分形,只是在表达上相当复杂,难以用古典的数学方法描述。?? Julia 集由一个复变函数?? 尽管这个复变函数看起来很简单,然而它却能够生成很复杂的分形图形。上图为Julia集生成的图形,由于c可以是任意值,所以当c取不同的值时,生成的Julia集的图形也不相同。 * Mandelbrot集 曼德勃罗特集是人类有史以来做出的最奇异,最瑰丽的几何图形.曾被称为“上帝的指纹”。 这个点集均出自公式: Zk+1=(Zk)^2+C, 这是一个迭代公式,式中的变量都是复数.这是一个大千世界,从他出发可以产生无穷无尽美丽图案,他是曼德勃罗特教授在二十世纪七十年代发现的.你看上图中,有的地方象日冕,有的地方象燃烧的火焰,只要你计算的点足够多,不管你把图案放大多少倍,都能显示出更加复杂的局部.这些局部既与整体不同,又有某种相似的地方,好像着梦幻般的图案具有无穷无尽的细节和自相似性.曼德勃罗特教授称此为“魔鬼的聚合物”.为此,曼德勃罗特在1988年获得了“科学形为艺术大奖”.?? * Mandelbrot集的生成 Zk+1=(Zk)^2+C, 式中Zk+1是复数Z = x + yi的第k+1次迭代,从复平面选择一点C(x0+y0i). Z的初始值为0进行迭代,直到Z的幅值(向量长度)大于2或者迭代次数已经达到某种任意的规定的限度. 化简计算. Z1 = C=x0+y0i Z2 = (Z1)^2+C=(x0+y0i)*(x0+y0i)+ x0+y0i =x0^2-y0^2+2x0y0 i+ x0+y0i = x0^2-y0^2+ x0 + (2x0y0+y0)i 迭代公式: x=(x2 - y2+ x) y=(2xy+ y) * Mandelbrot集判断代码 public int MandelbrotIter(Vector2 pos) { double x = pos.X; double y = pos.Y; int i = 0; for (; i max_iter; ++i) { if (x * x + y * y = 4) break; double tmp = x * x - y * y +
文档评论(0)