分形几何——大自然的密码

文摘   科技   2024-04-30 17:08   陕西  



Bottomless wonders spring from simple rules,

which are repeated without end.
无边的奇迹源于简单规则的无限重复——本华·曼德博




大自然不断地在重复简单的单元,最终变成各种复杂的结构。只要细心观察,我们经常能够发现很多循环迭代的例子,例如树的枝干、河的支流、蜿蜒的海岸线、血液循环的管道系统,世界本质上是非线性的,而分形是复杂非线性特征的一种几何表现,用分形语言去描绘大自然丰富多彩的面貌是最适宜的。

循环迭代算法介绍
迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值计算出对应的一个新值。Anemone就是继hoopsnake之后基于迭代算法的一款插件。
用于快速选择的非递归实现算法——循环迭代算法,与递归算法以及VC++标准库函数nth_element进行了比较,表明该算法比传统的递归算法具有较高的效率和可靠性;与标准库函数nth_ element比较,在时间效率方面具有明显优势。
循环机制中比较常见的一个例子是Lloyd算法,也称为Voronoi迭代,是一种以斯图亚特·劳埃德命名的算法,用于在欧几里德空间的子集中发现均匀间隔的点集,并将这些子集的分区分解成形状匀、大小均匀的凸形细胞。下图为Lloyd算法的例子,显示每个迭代当前点的Voronoi图,加号表示Voronoi细胞的中心。从图中可以很容易的发现,随着迭代次数的增加,这些点非常接近Voronoi细胞的中心。

Lloyd算法反复在分区中查找每个集的中心,然后根据这些中心组生成Voronoi 图形。类似的算法也可应用于高维空间,例如在有限元素法中平滑三角网格,或者进行网格均匀化。


Lloyd算法

由于 Voronoi细胞具有凸形,并且始终环绕其站点,因此存在简单的分解,可简单划分为:

在两个维度中,多边形单元格的边缘与其位点相连,形成一组伞形的三角形。

在三个维度中,单元体由几个平面多边形包围,需要进行三角测量。

对于具有n个三角形累积区域的2D单元AC=∑i=0nai(在这里ai是一个三角形的面积),新的细胞中心计算如下:

类似地,对于具有体积的3D单元vC=∑i=0nvi(在这里vi是一个特拉德龙的体积),中心计算如下:

Lloyd算法可用于生成点图的造型,在此应用程序中,中心集可以基于参考图像进行加权,以生成与输入图像相匹配的插图。

在有限元数法中,具有复杂几何形状通常被划分为形状更简单的元素:例如,二维域(欧几里德平面的子集或三维表面)通常被分割成三角形。这些元素的形成对于有限元素方法的融合非常重要。
Lloyd算法可应用于优化网格,移动其顶点并更改元素之间的连接模式,以产生更紧密的等边三角形。这些应用程序通过Lloyd 算法的较小次数迭代,阻止其收敛,以保留网格的其他功能。与不同的平滑方法(Laplacian 平滑)相比,Lloyd 的算法可以改变网格的拓扑,导致更近等边元素,并避免出现Laplacian平滑导致的缠绕问题。
Anemone插件基本用法介绍
虽然循环迭代的算法比较复杂,但是Anemone的作者对算法进行了简化,用户使用起来非常简单和方便。Anemone可以选择性的记录循环结果,还可以选择多个循环参数。常用的就是Loop Start和Loop end 两个运算器,需要注意的是start和end端的输入参数数量必须相同,不然就会报错

Loop Start运算器的N端输入循环次数,T端为循环启动的触发器,双击start运算器图标重启循环,双击end电池的图标结束循环。

Loop end运算器的E端为循环结束条件,D端输入需要循环的数据右键end电池的图标,选择Record data就会记录下每一次循环的数据。

Anemone案例介绍
1. Koch 曲线

科克曲线(Koch curve)是一种典型的分形曲线,一个边长为1的等边三角形,取每边中间的三分之一,接上去一个形状完全相似的但边长为其三分之一的三角形,结果是一个六角形。取六角形的每个边做同样的变换,即在中间三分之一接上更小的三角形,以此重复,直至无穷。外界的变得原来越细微曲折,形状接近理想化的雪花。



GH建模思路:
① 生成三角形,并将三角形接入循环中
② 然后将三角形的每条边分成3段,4个点
③ 将第三个点以第二个点为旋转中心旋转60°
④ 将新得到的点插入原线段的2号位
⑤ 从新生成多条直线并炸开,进入下一个循环



2. 延申动画 

分形几何的理论是直观可见的,它所涉及的形态具有巨大的审美感染力和各种各样的用途。Anemone插件可以模拟动态生长的过程,就是利用每次循环增加曲线参数值(与timer类似),再用record data 记录历史数据,就有延申动画的效果。


3. 树枝生长

自然界多姿多彩的植物深深地吸引着数学家和计算科学家,他们通过分形理论提供的数学规则对自然界的花、草、树、叶等植物的造型和生长进行计算机模拟。

当分形出现在植物中时,它们的每一分支和嫩芽都与其整体非常相似,其生成规则保证了小尺度上的特征成长后就变成大尺度上的特征,可以使植物最大限度地暴露在阳光下。以下为通过Anemone插件模拟树枝生长的过程:



GH建模思路:

① 生成基本圆接入循环中

② 将counter与一个数相乘得到圆每次偏移的距离

③ 接着将偏移后的圆向下移动,生成递增的随机点

④ 用closest point找到偏移后的随机点与偏移前的圆上的最近点

⑤ 将前后生成的对应点生成线



分形几何远远不只是一枝数学奇葩,它们还为描述物体和组织的结构形态、为探索物质世界的复杂机制提供了极其简洁的工具。将树枝生长分形案例进行延申,用细分工具的多管工具生成圆管就可以得到另一种效果——泰森多边形生长球。

分形是从混沌方程形成的一系列图形,包含不断放大的复杂自相似图案。分形的数学之美在于可以从相对简单的方程推导出无限复杂的系统。通过多次迭代或重复分形生成方程,随机输出就可以产生独特且可识别的美丽图案。

分形图案结合AI的渲染

Anemone插件及案例文件获取方法
公众号后台回复关键字“Ane”进行领取


长按二维码关注公众号 获取更多内容
www.rhino-grasshopper.com

犀牛参数化云平台
www.rhino-grasshopper.com
 最新文章