埃尔米特曲线 #
通过拉格朗日插值和艾特肯插值并不能获得理想的曲线,因为经常会出现曲线越过节点的情况。
所以这里介绍另一种曲线:Hermite Curves,即埃尔米特曲线。
可以在这里查看埃尔米特曲线演示:https://www.geogebra.org/m/cs4dvwbh
埃尔米特曲线是一个三次曲线,三次曲线有四个系数,它由以下几个信息构建而来:
- 曲线起点的位置,即参数 t=0 的位置。
- t=0 时的一阶导数,即曲线在起点的速度。
- 曲线终点的位置,即参数 t=1 的位置。
- t=1 时的一阶导数,即曲线在终点的速度。
我们称起点和终点分别为 p0 和 p1,速度分别为 v0 和 v1,下图是一些埃尔米特曲线。
三次曲线方程为:
p(t)=c0+c1t+c2t2+c3t3所以有以下等式成立:
p(0)=p0v(0)=v0v(1)=v1p(1)=p1=>c0=p0=>c1=v0=>c1+2c2+3c3=v1=>c0+c1+c2+c3=p1将上式转换为:
c0c1c2c3=p0=v0=−3p0−2v0−v1+3p1=2p0+v0+v1−2p1可以将曲线的参数方程表示为矩阵形式:
p(t)=Ct=[c0c1c2c3]1tt2t3注意 ci 是一个列向量,它的维数与几何维数有关(1D,2D 或者 3D)。
由 c 与 pi 和速度 vi 的公式可以将上述矩阵转换为称如下的 PHt 格式:
p(t)=Ct=PHt=[p0v0v1p1]10000100−3−2−13211−21tt2t3=p(Ht)=[p0v0v1p1]1−3t2+2t3t−2t2+t3−t2+t33t2−2t3所以得到 Hi(t) 为:
H0(t)H1(t)H2(t)H3(t)=1−3t2+2t3=t−2t2+t3=−t2+t3=3t2−2t3所以可以得到 p(t) 最终公式如下:
p(t)=[p0v0v1p1]H0(t)H1(t)H2(t)H3(t)=H0(t)p0+H1(t)v0+H2(t)v1+H3(t)p1(完)