波士顿和,不过非常暖我们最终还是了今年的首降雪。。刚刚凝视凝视凝视窗外窗外时时时时时时时刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚凝视凝视凝视我我我我我我我不禁不禁不禁想到例外,我们我们其描述,这描述,这科赫雪花。现在现在
创建科赫雪花
正如之前博客所讨论,分形的,分形一些一些一些非常有趣的应用。科赫雪花就是种分形分形,它它迭代构造方法:
- 从一三角形开始,这这就科赫雪花的次迭。。。
- 找到当前中条边的中心。。
- 在每的中心增加一个向等等边三角形,边长边边边边边边
- 定义科赫雪花次代,在迭雪花的外边所有新增三角形的外边迭代迭代
- 重复重复2-4,进行进行多迭代。。
下图显示了的前前前次迭代次迭代次迭代
科赫雪花的四迭代。图片图片为自行自行自行制作已获获CC BY-SA 3.0授权,并并Wikimedia Commons分享。
构建科赫雪花的结构
既然已经了用算法,我们我们我们利用利用利用利用利用利用利用利用利用利用利用利用利用及全局定义节点下一个二维几何零件。零包含五:等等三角形边长;底边的的的的X及y坐标;所,从从底边点向顶点法向矢量分量。。
这五参数等边三角形的,位置及取向。
定义几何零件的参数。
用于等三角形的多边形。。
将零绕底边中心。。
移动零件的。
定义几何零后,我们我们在在几何分支下的个实例。最初最初科赫雪花零次迭代代代代代
在应用程序开发器开发器布置app的的用户界面
科赫雪花app的的非常简单,只只包含个可与用户滑块(1)1)指定指定绘制雪花的;;;按钮2))用用及展示的几。此外此外此外此外,还还文本标签((3))和和个个数据显示4),用用的;;,还;最后最后个个个个图形(5),用用绘制的。。。
app内包含个,表单表单含五。。。
此外,应用程序中中包含项项项声明,用用定义个为为迭代
的整值,缺省零,允许零用户;还一个个一维双双精度中心
。阵列个的的为为为为为为找到每的中心点。这个值值。。。
两项声明设定。
用户界面内滑块特征控制了迭代
的整。下图了设定及及值值值数据显示特征,用于次数由于我们了较易执行但执行效率并非最高高的的算法,所以算法算法
滑块特征的。
接下来,我们查看设定,如设定设定示。按钮将运行两创建Nowflake
方法之后,产生产生将绘制图形。。。
按钮设定。
app的的的用户界面,并并从中雪花几何雪花几何的需要方法方法内实现实现。。。我们我们我们将将将再分析方法方法内的
1个型号。“ geom1”).feature()。clear();2型号。“ geom1”)。创造(“ pi1”,,,,“ partinstance”);3型号。“ geom1”)。跑(“鳍”);4 for(int iter = 1; iter <=迭代; iter ++){5 string [] unionList = new String [model.geom(geom)(“ geom1”).getnedges()+1];6 UnionList [0] =“ pi”+ iter;7 for(int edge = 1; edge <= model.geom(geom)“ geom1”).getnedges();edge ++){8字符串newpartinstance =“ pi”+ iter + edge;9型号。“ geom1”)。创建(newpartinstance,“ partinstance”)。放(“部分”,,,,“第1部分”);10 with with model.geom(“ geom1”).feature(newPartinstance));11 setentry(“ InPuteXpr”,,,,“长度”,ToString(Math.pow(1.0/3.0,iter)));12 setentry(“ InPuteXpr”,,,,“ PX”,model.geom(geom(“ geom1”).EDGEX(边缘,中心)[0] [0]);13 setentry(“ InPuteXpr”,,,,“ py”,model.geom(geom(“ geom1”).EDGEX(边缘,中心)[0] [1]);14 setentry(“ InPuteXpr”,,,,“ nx”,model.geom(geom(“ geom1”).Edgenormal(边缘,中心)[0] [0]);15 setentry(“ InPuteXpr”,,,,“纽约”,model.geom(geom(“ geom1”).Edgenormal(边缘,中心)[0] [1]);16 endWith();17 UnionList [edge] = newPartinstance;18} 19型号。“ geom1”)。创造(“ pi”+(iter+1),“联盟”)。选择(“输入”)。set(unionList);20型号。“ geom1”)。特征(“ pi”+(iter+1))。设置(“ intbnd”,,,,“离开”);21型号。“ geom1”)。跑(“鳍”);22}
我们来每行代码作用作用
- 清除所有序列,以便以便开始。。
- 使用缺省取向位置创建一简单三角形零件零件。这就就是雪花雪花的的的第零第零阶阶
PI1
。 - 完成几这是所有几何指标必须。。。
- 根据指定次数开始,使用使用的的的的
迭代
作为停止条件。 - 定义一空的字符串阵列
UnionList
。阵列每单元均包含于几何对象的标签标识符。阵列的的长度长度等于等于边数边数边数边数边数边数边数 - 定义
UnionList
阵列中个。这是前步结果标签标识符标识符标识符。:我们:我们我们我们我们已经在在在第第第第第第第第第第第第第第迭代
的整数自动转化一个,并字符串,并字符串字符串字符串“ pi”
。 - 按之前的雪花边数执行迭代。
- 指定在边上的三角形零件实例标签标识符。注意
迭代
及边缘
的整数会按顺序字符串字符串pi
,即即实例标签。。 - 创建一零件实例,并并与其指定标签标识符。。
- 使用
使用()/endWith()
11-15指向指向当前零件。。 - 指定侧三角形长度。零阶的的为为为为为为为为为为为第第第第第第第次迭代次迭代的(1/3)n。需要
tostring()
函数来浮点值转换。。 - 将新三角形的X位置指定最后次迭代侧边的中点。
edgex
方法已收录在《 comsol编程编程手册》》中。请我们将中心
设为0.5。 - 指定y位置。
- 指定三角形法向的X分量。
Edgenormal
方法已收录在《 comsol编程编程手册》》中。 - 指定法向的y分量。
- 结束
使用()/endWith()
语句。 - 将当前的标识符增加所有对象列表。。
- 结束在边上的迭代。
- 针对几何的所有执行一次布尔集。。标签标签为
pin
,其中n
是下一次的迭代次数需要在(iter+1)
前后,以便,以便迭代
的增量转换为字符串。 - 指定最后个保存对象的内。。
- 完成几这为下一次迭代重置所有几何。。
- 完成雪花的迭代循环。
至此,我们介绍了了中中各方面我们来看结果!
我们的简单科赫雪花app。
app,app,将将一文件文件,甚至甚至文件其中其中执行分形天线。如果天线设计,不妨不妨看的的的的Sierpinski分形天线模型,甚至甚至尝试从头创建模型。
自己::
App,App开发器开发器开发器开发器开发器开发器开发器开发器
- 下载《应用程序开发器开发器》》
- 观看视频,学习如何使用应用开发器开发器和comsol Server™
- 阅读,了解,了解在各应用领域使用仿真应用程序
读完这些后,您将如何对进行进行进行,从而从而进行进行更改更改雪花尺寸,导出创建的的几几,以及何,以及
您希望用comsol Multiphysics创建创建哪类呢呢?您任何疑问,欢迎欢迎欢迎,欢迎与我们联系。
评论(1)
红斌徐
2017-03-05凉爽的