在做“福特圆”之前,要了解什么是福特圆?


(资料图片)

https://www.bilibili.com/video/BV16U4y1Y7aF

了解之后,大概知道了以下信息:

两个分数的法里和:a/b+c/d=(a+c)/(b+d)

A圆的坐标(a/b,1/2b²),B圆的坐标(c/d,1/2d²),C圆的坐标为((a+c)/(b+d),1/2(b+d)²)且与A,B两个圆相切并与X轴相切。

下面开始构思:

要知道【哪些圆组合】产生第三个圆,并迭代下去。

利用知道的【法里和公式】计算出每组圆产生的第三个圆。

【思考一】(以下的数字均代表圆的序号,用python列表表示两个圆与生成第三个圆的“组合配方”)

我从前几次组合总结到:

[0,1,2]

[0,2,3],[1,2,4]

[0,3,5],[2,3,6],[1,4,8],[2,4,9]

.......

一个组合分裂成了两个可产生圆的“组合配方”,每一行的列表数量呈2的幂数增长。

每个列表的第三个元素都是新生成的圆的序号。

这个规律的前提是,首先已经有两个圆,才能产生[0,1,2]。

有了这个”组合配方“,只要遍历并赋值给圆的参数就可以了。

【思考二】

我构想在C4D中,在一个【空对象】下通过python脚本新建圆并赋值给相关参数,逐个生成新圆。

首先要让圆知道自己是由那两个圆产生的,并记录在自己身上,方便后面产生的圆读取。

首先创建两个初始圆A和B,坐标分别为(0/1,1),(1/1,1)。

在新圆上创建【用户数据】,用于保存那个‘配方列表’和需要的信息。

创建圆,根据配方找到上一代的圆并读取参数经过【法里和公式】计算赋值给新的圆。

重复遍历产生新的圆。

在选中的对象上,修改该对象的名字,输入要产生圆的数量。即可产生相应数量的【福特圆】,这样方便。

在程序上做了个保险,迭代数量过大提示窗口并推出。

可以得到:

以上就是一键产生福特圆的分享。

更多的玩法:可以使用C4D中的【分裂】和【动态样条】做出不错的动画来。

=================================================

【脚本下载】

链接:https://pan.baidu.com/s/1-ChwVIsyFI8FB0L092v7zA 提取码:nftn

【使用方法】

shift+F11打开【脚本管理器】

【文件】——【导入脚本】——选择脚本即可。

在场景中创建一个【空对象】并将名字改为要创建圆的数量,例如“200”。

点击【脚本管理器】右下角的【执行】即可看到生成的一大堆圆了。

推荐内容