[分形]L系统[2]------Hilbert曲线的绘制

王朝other·作者佚名  2006-02-23
窄屏简体版  字體: |||超大  

[分形]L系统[2]------Hilbert曲线的绘制

by EmilMatthew 06/02/13

1前言:

几个月前,初识分形时,我曾写有小作------分形几何L系统的实现

http://blog.csdn.net/EmilMatthew/archive/2005/11/15/529867.aspx

但是,当时,作为基本形状的Hilbert曲线我却没有绘出来,由于对数学上的把握及资料的不足,我无法判定问题出在哪里.最近,参考了相关资料,发现没画出的原因竟是程序里少写一个关于当输入字符是F即前进信号的判定!

2关于Hilbert曲线:

Hilbert是19世纪未,20世纪初的非常杰出的数学家。关于他最出名的事迹,要数在20世纪出提出的20个高难度数学问题,而Hilbert曲线则是他关于在生成图方面的研究.

关于Hilbert其人:

http://episte.math.ntu.edu.tw/people/p_hilbert/

http://www-groups.dcs.st-and.ac.uk/~history/Mathematicians/Hilbert.html

Hilbert曲线在MathWorld上的介绍:

http://mathworld.wolfram.com/HilbertCurve.html

3关键部分:

关于L系统,除了我的那篇愚作可以参考一二外,还可去下面这个站点: (这个站点的文章有点”阴”,在关键性的地方都用一个Applet遮掉了,好像要输处密钥才能看到J)

http://www.arcytech.org/java/fractals/process.shtml

在L系统体系中,生成Hilbert也是相当简单简单的,只不过,这里多了一个需要迭代的符号:

迭代初始状态:

angle: 0

serial cmd sign: X

迭代主过程:

Xà+YF-XFX-FY+

Yà-XF+YFY+FX-

也就是说,对于生成曲线的命令字符串,在迭代n-1次后,对于第n次迭代。从左向右扫描n-1次迭代后的命令字符串,遇到X则用+YF-XFX-FY+代替,遇到Y则用-XF+YFY+FX-代替,其余命令符:’+’,‘-’,’F’则直接拷贝,当n-1次迭代后的命令字符串扫描完毕后,也就完成了n次迭代中命令字符串构建.

比如,Hilbert 曲线命令字符串迭代结果依次如下:

次数 命令字符串

1 +YF-XFX-FY+

2 +-XF+YFY+FX-F-+YF-XFX-FY+F+YF-XFX-FY+-F-XF+YFY+FX-+

Hilbert生成效果图:

4附录:

1算法测试程序下载:

http://emilmatthew.51.net/EmilPapers/06_09Hilbert/code.rar

注,该Flash程序通过加载外部xml来进行参数的设置:

在观看Hilbert效果时,当迭代次数为3或4时参数设定成如下值较宜:

a)迭代次数3

<inputDatas iterLimit='3' initString="X" SUBX="+YF-XFX-FY+" SUBY="-XF+YFY+FX-" fps='20' stepLen='25' pationCirN='4' offsetX="150" offsetY="300">

</inputDatas>

b)迭代次数4

<inputDatas iterLimit='4' initString="X" SUBX="+YF-XFX-FY+" SUBY="-XF+YFY+FX-" fps='20' stepLen='10' pationCirN='4' offsetX="150" offsetY="300"> </inputDatas>

若直接点击无法下载,请将下载的超链接粘接至浏览器地址栏后按回车.若不出意外,此时应能下载.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航