修改

文档

图片

迪威网友39bc06
迪威网友39bc06
原创模型

BlocksCAD中雪花生长的模拟

VIP
免费,登录即可下载
本资源不能下载
发布时间:2024/3/14 1:51:00
更新:有关该算法的直接OpeCAD实现,请参见此处。
这在BlocksCAD中实现了对Reiter的hex-cell雪花生长算法的修改。该算法使用实值元胞自动机来模拟水分的扩散和吸积。当以高分辨率运行时,模型可以产生出人意料的逼真的雪花,但是BlocksCAD不能处理超过半径50(甚至是滞后的)的六边形网格来进行进化。
我强烈建议在这些大的BlocksCAD项目中使用firefoxitead和Chrome。Firefox更具响应性。
模型有以下主要参数:
alpha:控制水分扩散速度
贝塔:控制背景湿度水平(可选随机局部变化)
伽玛:控制冻结位置的吸积率(可选随机时间变化)
最初的Reiter算法中没有的随机变异修正,最终产生了非常好的效果——或者至少beta变异产生了(gamma变异似乎没有那么多)。
区块代码有四种类型:半径20、半径30、半径40和半径50。在radius40上,它可以在Firefox上正常工作,在Chrome上可以达到radius30。radius50在Firefox上很落后,我甚至还没在Chrome上试过。对于BlocksCAD,Firefox要快得多。
您可以根据给定点的模拟质量值改变雪花的厚度以获得进一步的三维效果(将此效果的最小厚度更改为小于最大厚度),或者可以引入对称脊线以获得令人愉悦的视觉三维效果(使脊线角度大约为3-10度)。
雪花很容易打印出来——见照片。我建议厚度约为2.5毫米,并用剃刀刮去打印机底座上的薄片。
Thingivee定制程序是通过将代码从BlocksCAD导出到OpeCAD并将参数移到顶部而生成的。导出的OpeCAD代码还生成了动画和马赛克。
BlocksCAD不支持数组。它是一种函数语言。因此,进化是通过拥有一个巨大的进化模块来处理的,该模块接受421个参数(半径为40维):迭代计数,以及所有420个被模拟单元的数据(只需要模拟整个电路板的1/12——其余由对称性重新构造)。然后,该模块使用递减的迭代计数和演化的单元来递归地调用自己。由于缺少数组,每个细胞的进化都有一个对细胞进化函数的硬编码调用。一旦迭代计数达到零,draw模块将绘制所有计数为冻结(数据值至少为1)的单元格,以及它们(通常)的11个对称副本。
还有一个大的go模块初始化evolve的参数。
虽然人们可以拖放所有硬编码的进化代码,但我只是编写了一个python脚本(包括:主代码是赖特.scad)它为evolve和go模块生成BlocksCAD xml。绘图代码、单个单元演化代码和参数初始化代码都是用BlocksCAD手工编写的。
个文件
压缩包大小:12MB
小程序二维码
微信小程序 微信扫码打开此模型
登录后发表评论
恒诺鑫科-专注碳素制品的开发与生产