1、给定矢量 , , , ,称满足下列条件的参数三次多项式0 1 0 1曲线 为 Hermite 曲线:(),0,1(0)=0,(1)=1,(0)=0,(1)=1,即 Hermite 曲线两个端点为 , ,在两端点的切矢量分别 ,0 1 0。记几何矩阵和基矩阵分别为 , , , 是未知的. 取 1 ,则只要 就可以了。一般的曲线经过多=0, 1, 0, 1 项式分解, 得到参数多项式曲线的矩阵表示 :()=将(1)式代入(2 )得到:,|=0=(1,0,0,0)=0,|=1=(1,1,1,1)=1,|=0=(0,1,0,0)=0,|=0=(0,1,2,3)=1将上面四个式子合并如下形式:100 1
2、 0 01 1 11 0 20 1 0 3=0, 1, 0, 1=上面方程的解不唯一,不妨取=100 1 0 01 1 11 0 20 1 0 31=100 0 3 20 3 21 2 10 0 1 1从而得到三次 Hermite 曲线的方程: ()=其中 确定了一组 Hermite 基函数,即0(), 1(), 0(), 1()=100 0 3 20 3 21 2 10 0 1 1123=132+23322322+32+3 附:MATLAB 程序function yy=hermite(x,y,dy,xx) % 输入X左右两个端点的X轴坐标Y左右两个端点的Y轴坐标dy左右两个端点的切矢xx中间
3、插值的点X轴坐标%输出yy中间插值的点Y轴坐标function yy=hermite(x,y,dy,xx) k=length(xx);z=zeros(1,k);for i=1:k;s=0;xaix=xx(i);a=1-3.*(xaix)2+2.*(xaix)3;b=2.*(xaix)2-2.*(xaix)3;c=xaix-2.*(xaix)2+(xaix)3;d=-2.*(xaix)2+(xaix)3;s=y(1)*a+y(2)*b+dy(1)*c+dy(2)*d;z(i)=s;endyy=z;function yy=hermite(x,y,dy,xx) % 输入X左右两个端点的X轴坐标Y左右
4、两个端点的Y轴坐标dy左右两个端点的切矢xx中间插值的点X轴坐标%输出yy中间插值的点Y轴坐标m=length(x);n=length(y);l=length(dy);k=length(xx); if m=n,error(向量长度不一样 );end; if n=l,error(向量长度不一样 );end; z=zeros(1,k); for i=1:k; s=0; a=xx(i)-x(1);b=x(1)-x(2);c=xx(i)-x(2);a1=(1-2*a/b)*(c/b)2;aa=xx(i)-x(2);a2=(1+2*aa/b)*(a/b)2; b1=a*(c/b)2; b2=c*(a/b)2; s=y(1)*a1+y(2)*a2+dy(1)*b1+dy(2)*b2; z(i)=s; endyy=z;