「分形之美」用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比较喜欢的处理方式是:要得到什么,就将什么作为基础(起始值)去迭代生成。
至于迭代表达式的书写:
- 一是从自身入手,也就是看能不能直接将迭代的起始值进行缩放(位似)、旋转等。谢尔宾斯基三角形就是一例。
- 二是“降一级”处理,比如迭代的起始值是线段,而线段可由两点决定,那就看看如何将线段的两端点进行几何变换,以生成新的线段的两端点,科赫曲线就是一例。
强烈建议查看勾股树、科赫雪花、毕氏螺线的制作教程。
请先 后发表评论~