上面案例中用到了Kangaroo2中的Circle Packing(圆堆图),即通过物理碰撞的方式模拟圆相切的过程,并且将图片灰度值作为控制圆半径大小的变量 。最好选择黑白灰变化较为明显的图片,这样才会生成过渡较好的相切圆图案 。改变Import Image运算器输入的图片,即可得到如下图所示的结果 。
Circle Packing在计算机科学和数学领域具有广泛的应用,其生成算法可遵循多种逻辑 。Kangaroo主要通过某个核心位置的吸引力将圆全部聚拢在一起,当相邻两个圆的圆心距离小于半径之和时,斥力开始发挥作用,直至达到动态平衡 。
作为一种独特的几何形式,Circle Packing也常应用于艺术创作,用相切圆的排列构成画面,搭配渐变的颜色让画面更加丰富,使平面的元素具备立体的视觉延伸 。
使用三维的Sphere Packing(球堆算法),球体间可自动调整缝隙大小,增加空间利用率 。球堆算法可用于岩石、粉尘、颗粒流等分析 。
Circle Packing还可应用于数据可视化领域,通过圆大小与位置的变化关系,可以直观的显示数据呈现的结果 。
曲面上的Circle Packing
Circle Packing能够以非常美观的方式逼近任何曲面,2010年上海世博会“3D纸艺”展览中,这个半球形的纸板亭也将相切圆的元素应用到了实际项目,从设计到安装的每一步都由计算机辅助完成 。
step 1
在Rhino中创建一个曲面,并将其拾取进GH中 。首先在曲面上生成一定数量的随机点,作为初始圆的中心点 。由于Kangaroo的组件无法直接计算曲面,需要用Mesh运算器将曲面转换为网格 。
step 2
通过Onmesh运算器对点施加拉回到网格表面的作用力,通过SphereCollide运算器对圆施加一个相切的碰撞力,将两个作用力赋予Solver核心解算器,并用Boolean Toggle控制程序的运行与否 。
step 3
为了保证相切圆能够贴合曲面表面,需要指定曲面的相切平面作为生成圆的基准平面 。该步骤需要用到Surface Closest Point运算器提供随机点对应曲面的UV坐标,再通过Evaluate Surface运算器依据UV坐标输出随机点对应的切平面 。
扎哈Thallus
在米兰设计展上,作为网红的thallus,居然能用犀牛的grasshopper设计出来 。今天我们带来教程,学习一下大师的设计 。
0 1
无约束生长
在平面图中画一个矩形区域,在矩形区域内随意绘制一些图形,将这个图形切分成2000段,每一段我们将其长度约束为5毫米 。将其输入袋鼠主模拟器,控制其中的一个参数,就是长度约束 。
0 2
边框约束
有了长度约束之后,打开袋鼠开关,线就会自动伸长,但这个时候会出现两个问题,线会超出区域的外面,另外线会自动交叉 。
现在解决第一个问题,线会超出边框之外,于是矩形边框就有了作用,将其变为网格面,将所有的线段约束到网格面之内,施加的力大小为100,然后将其输入袋鼠主模拟器 。
0 3
线段之间的碰撞约束
这样就可以看到线不会超出区域之外,但线与线之间还是会互相交叉,因此用碰撞约束作为条件,将线与线之间的最小距离设为0.5毫米,也就是说在0.5毫米范围以内的时候,线与线之间就会产生碰撞的力,从而避免线与线之间的交叉,而在0.5毫米之外的话,线与线之间是没有力的产生,因此它可以任意的扩张生长 。
0 4
线段之间夹角的约束
多了这两个力之后,线不会交叉,也不会跑到区域之外,但是它的形状很不规则我们想把现在的线段变成曲线,要把无数根短小的折线变为曲线,就需要对线与线段之间有一个角度的约束 。
我们知道如果两条线段相连接,如果是一条直线,那么它们的夹角为0度,或者也可以说是180度 。而多条线段相连之后,多边形内部总会有一个夹角,随着多边形等分的段数越多,多边形边与边之间的夹角越大,最终趋近于一个圆,当分段数无限大的时候,边与边之间的夹角就可以无限的接近于0,因此我们将边与边之间的夹角直接设为0度,将力量设为100,连接之后就会产生如图所示的现象,得到最终的平面曲线模型。
推荐阅读
- 晋江青阳时代广场属于第几网格
- 什么叫做网格化管理
- 朱紫怎么取中文名字
- 晋江市陈埭镇庵上村属于第几网格
- 外墙网格布一般用多少克的
- gxg怎么念 gxg介绍
- realme是什么牌子中文名
- 为什么有些电影的英文名和中文名差别很大
- 为什么动画片火影忍者中角色的中文名字有的是音译有的不是
- 内墙抹灰网格布用在哪一层