分形树是最基本和最典型的分形结构,利用各种编程语言都能够绘制,中小学老师常见的几何画板也能绘制,网上的几何画板相关教程也比较多,geogebra教程则非常少,其中几何画板的效果如下: 很显然,这个几何画板的迭代功能较好,但是绘制的效果比较“不好看”。 利用神奇的数学软件geopgebra,应该如何绘制分形树呢? 可以! 而且效果很好!看看下面的动图: 静态效果如下: 绘制过程:(笔者选自唐大仕博士的课程,并且进行思考和重新叙述) 第一步;制作自定义工具: 但是如果向上图一样,即点CDE是自由点,则新建自定义工具中,输入对象不能选线段f, 理由是:这些DCE的点和线段,和线段f无关。 怎么办呢? 即要把点CDE的产生和线段AB有关! 我们可以考虑利用旋转得到点CDE。 例如点C=位似(旋转(描点(f, 0), π + π / 4, 描点(f, 1)), 0.5, 描点(f, 1)) 这样下面创建自定义工具: ” 现在利用这个工具试试看效果: 发现第一个线段是可以用的,但是到第二层的时候,点击绿色的列表中的线段的时候,这个自定义不起作用了,为什么呢? 原因分析:原则上,迭代需要一样的“东西”,才能迭代下去,但是这个自定义工具输入是一条线段,输出是一个列表,所以直接往下点击或迭代,是不能起作用的! 怎么办呢? 利用映射指令啊! 映射指令具有非神奇的作用,可以起到“乾坤大挪移”和批量制图的作用! 参考:(点击可打开) geogebra进阶系列6:继续谈映射指令的神奇作用(等边三角形中的等边三角形) geogebra进阶系列4:映射指令的神奇作用(巧妙提取多边形列表中的顶点) 即第二步:指令:映射(分形树(s), s, l1) 效果得到如下的线段的集合: 但是这些集合是单独的集合构成的一个大集合,还需要“合并”,或者利用“扁平列表” 否则产生如下错误: 利用指令“扁平列表(l5)”得到的l6和l5对比如下: 这样可以利用指令:l7=映射(分形树(s), s, l6)得到如下的效果。 也就是说,可以使用迭代列表的指令了! 第三步: 迭代列表(扁平列表(映射(分形树(p), p, q)), q, {{f}}, 8) 得到: 即这个分形树如下: 至此,这个分形树已经绘制完成。 但是如果想做成动态可变的分形树,只需要在点CDE的定义时,加上一个随机数,即random()函数 再最后制作完时,加上一个按钮,按钮脚本写:更新作图[],即可!(唐大仕老师的作法) |
|