全称为:Cublic Catmull Rom Spline,一般项目里面简称CR曲线。CR曲线是唯一可以自带控制点的可调整曲线。
CR曲线在创建时默认没有手动控制点,因此看上去是一条直线,需要自行添加控制点才能成为曲线。
如果将松紧程度拉到最紧,形态会变成一条折线。
目前还在开发状态,交互还不完整。
松紧程度:tension
,控制曲线弯曲程度,取值范围为0~1,0表示线性,1表示圆滑。
其他参数:alpha
,固定0.5不可调整,仅由开发人员调整。
CR曲线本质是一个参数方程,给定四个控制点 p0,p1,p2,p3 以及 α,τ 通过如下方法计算:
t01=∣p0−p1∣αt12=∣p1−p2∣αt23=∣p2−p3∣α
m1=(1−τ)(p2−p1+t12(t01p1−p0−t01+t12p2−p0))
m2=(1−τ)(p2−p1+t12(t23p3−p2−t12+t23p3−p1))
a=2(p1−p2)+m1+m2b=−3(p1−p2)−m1−m1−m2c=m1d=p1
p(t)=at3+bt2+ct+d
先求导
p′=dtdp(t)=3t2a+2tb+c
弧长:
s=∫01∣p′∣dt
s(t0,t1)=∫t0t1∣p′∣dt=(t1−t0)∫01∣p′(x(t1−t0)+t0)∣dx
其中
x=t1−t0t−t0