在做“福特圆”之前,要了解什么是福特圆?
(资料图片)
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”。
点击【脚本管理器】右下角的【执行】即可看到生成的一大堆圆了。