「分形之美」用GeoGebra迭代生成勾股树等,内有实现指令

一个数学意义上分形的生成是基于一个不断迭代的方程式,即一种基于递归的反馈系统。

本文将列出一些常见的分形几何图形,并给出用动态数学软件GeoGebra进行迭代生成的指令。

指令中的A、B表示点,n是迭代次数。

至于渐变涂色,基本上是使用自定义涂色工具


勾股树

其中,k = 滑动条(0, 1)

生成勾股树指令:

迭代列表(合并(映射({多边形(顶点(p, 4), 描点(半圆(顶点(p, 4), 顶点(p, 3)), k), 4), 多边形(描点(半圆(顶点(p, 4), 顶点(p, 3)), k), 顶点(p, 3), 4)}, p, p1)), p1, {{多边形(A, B, 4)}}, n)

想了解制作思路、理解指令,请看《勾股树制作教程》

分形二叉树

其中,α = 滑动条(90°, 270°)β = 滑动条(90°, 270°)k = 滑动条(0.3, 0.7)

生成分形树的指令:

迭代列表(合并(映射(映射(线段(描点(f, 1), 位似(旋转(描点(f, 0), θ, 描点(f, 1)), k, 描点(f, 1))), θ, {α, β}), f, f1)), f1, {{线段(A, B)}}, n)

还可以较为自由地渐变:

点击链接,可查看制作教程。

谢尔宾斯基三角形

指令:

迭代(合并(映射(映射(位似(p, 0.5, O), O, {顶点(p)}), p, p1)), p1, {{多边形(A, B, 3)}}, n)

还有3D版的:

指令:

迭代(合并(映射(映射(位似(a, 0.5, P), P, 序列(描点(a, k / 6), k, 0, 3)), a, a1)), a1, {{正四面体(多边形(A, B, 3))}}, 1)

如果想看思考过程,请点击链接

谢尔宾斯基地毯

指令:

迭代(合并(映射(映射(位似(p1, 1 / 3, k), k, 映射(中点(顶点(p1, u), 顶点(p1, v)), u, 合并({1…4, 1…4}), v, 合并({1…4, {2, 3, 4, 1}}))), p1, p)), p, {{多边形(A, B, 4)}}, n)

还有立体化的:

生成谢尔宾斯基海绵(门格海绵)指令:

迭代(合并(映射(映射(位似(p1, 1 / 3, k), k, 映射(描点(p1, k), k, 扁平列表({1…6, {8, 10}, 序列(t, t, 0.5, 11.5)}) / 12)), p1, p)), p, {{正六面体(A, B, C)}}, n)

科赫雪花

科赫曲线:

指令:

迭代(扁平列表(映射(映射(序列(线段(元素(l1, u), 元素(l1, u + 1)), u, 1, 4), l1, {插入(顶点(多边形(描点(f, 1 / 3), 描点(f, 2 / 3), 3), 3), 序列(描点(f, v), v, 0, 1, 1 / 3), 3)}), f, f1)), f1, {{线段(A, B)}}, n)

科赫雪花:

指令:

C = 顶点(多边形(A, B, 3), 3)

迭代(扁平列表(映射(映射(序列(线段(元素(l1, u), 元素(l1, u + 1)), u, 1, 4), l1, {插入(顶点(多边形(描点(f, 1 / 3), 描点(f, 2 / 3), 3), 3), 序列(描点(f, v), v, 0, 1, 1 / 3), 3)}), f, f1)), f1, {{线段(B, A), 线段(A, C), 线段(C, B)}}, n)

点击链接,可查看制作思路,深入了解迭代。

H迭代

指令:

迭代列表(合并(映射(映射(线段(描点(f, k) + 法向量(f) / (2sqrt(2)), 描点(f, k) - 法向量(f) / (2sqrt(2))), k, {0, 1}), f, f1)), f1, {{线段(A, B)}}, n)

康托尔三分集

指令:

迭代列表(合并(映射(映射(位似(f, 1 / 3, 描点(f, k) + (0, -0.05)), k, {0, 1}), f, f1)), f1, {{线段(A, B)}}, n)

莱维C形曲线

指令:

迭代(合并(映射({线段(描点(f, 0), 中点(f) + 0.5法向量(f)), 线段(中点(f) + 0.5法向量(f), 描点(f, 1))}, f, f1)), f1, {{线段(A, B)}}, n)

龙形线

指令:

迭代(合并(映射({线段(描点(f, 0), 中点(f) - 0.5法向量(f)), 线段(描点(f, 1), 中点(f) - 0.5法向量(f))}, f, f1)), f1, {{线段(A, B)}}, n)

结语

迭代( <表达式>, <变量>, <起始值>, <迭代次数> )

啊K比较喜欢的处理方式是:要得到什么,就将什么作为基础(起始值)去迭代生成。

至于迭代表达式的书写:

  • 一是从自身入手,也就是看能不能直接将迭代的起始值进行缩放(位似)、旋转等。谢尔宾斯基三角形就是一例。
  • 二是“降一级”处理,比如迭代的起始值是线段,而线段可由两点决定,那就看看如何将线段的两端点进行几何变换,以生成新的线段的两端点,科赫曲线就是一例。

强烈建议查看勾股树、科赫雪花、毕氏螺线的制作教程。

举报
评论 0