(本文未经许可禁止转载)
艺术不是享乐、安慰或娱乐;艺术是一桩伟大的事业。艺术是人类生活中把人们的理性意识转化为感情的一种工具。——列夫·托尔斯泰
效果预览
考虑到网站性能,下面效果仅显示前50个圆,有950个圆被隐藏
观看完整效果请前往这里,滑至界面最下方点击Run
和Play
用到的工具
三次贝塞尔曲线构造函数
f(t)=α1(1−t)3+3α2(1−t)2t+3α3(1−t)t2+α4t3
α1,α2,α3,α4∈Ct∈[0,1]
拟合函数
F(t)=...+c−2e−2it+c−1e−1it+c0e0it+c1e1it+c2e2it+...cm=2π1∫02πf(t)e−mitdt.
我们的目标
其中计算出来的数列将cm
作为最终的输出数据.我们的工作是求 cm
.
说明:
根据2,我们发现要拟合的目标函数仅有t一个自变量.我们又知道:
am,n,α,β:=2π1∫αβ(β−αt−α)ne−mitdt,n∈{0,1,2,...}
的解析值可简单求出.
(其中 (β−αt−α
) 是把t的范围从[α,β]
映射到[0,1]
;α,β
分别是当前贝塞尔构造函数定义域的下确界和上确界)
因此,仅需要确定数列cm
和数列 am,n,α,β
之间的关系即可.这可以通过对2关于t进行降幂排序、并将结果的t的某次方替换成am,n,α,β
得到,进而确立cm
和am,n,α,β
的关系.
计算
对2关于t进行降幂排序得到:
f(t)=(−α1+3α2−3α3+α4)t3+3(α1−2α2+α3)t2+3(−α1+α2)t+α1
设:有 nb
段贝塞尔曲线、 F(t)
的周期为2π
.
则 F(t)
是一个被分成nb
段的分段函数,周期是2π
.我们将每一段函数分开求cm
并加和,即可得到最终数据.
接下来开始正式计算,先计算am,n,α,β
的迭代公式.
In:=am,n,α,β
经过对上式进行分部积分法可以得到:
In=2πmie−imβ−(β−α)mniIn−1,n=1,2,3,4,...I0=2πmi(e−imβ−e−imα).
利用这个迭代式,我们可以求出所有贝塞尔弧段对应的
am,n,α,β.
这里我们再设一个数列 {wn}
用来存储(全部曲线长度之和第n段曲线到第1段曲线的长度的和
)的值,并且令 w0=0
.
把每一小段分开求并加和,可得:
cm=∑k=1nb[(−α1+3α2−3α3+α4)am,3,wk−1,wk+3(α1−2α2+α3)am,2,wk−1,wk+3(−α1+α2)am,1,wk−1,wk+α1am,0,wk−1,wk].
最后,将获得的复数列 cm
转换成二维点列并写入本地即可.
总结
通过上面的计算过程,不难发现,只要能表示成关于时间t的映射 f:R→C
,都可对其进行降幂排序,将 tn
替换成 am,n,α,β
得到相应的输出数据 cm
.