%%三次B样条均匀插值函数
%输入:扩展型值点矩阵P,型值点数m
%输出:插值后得到的矩阵
function inter_path=interpolation(P,m)
% C=[1 3 5 7 9 11 13 15 17 19 21;%型值点10
% 1 2.5 4 5 7 4.5 4 6 4 8 4];
% P=[0 1 3 5 7 9 11 13 15 17 19 21 0;%型值点扩展12
% 0 1 2.5 4 5 7 4.5 4 6 4 8 4 0];
%m=11;
% n=10;
% k=3;
V=zeros(m+2,3);
A=zeros(m+2,m+2);
A(1,1)=6;A(1,2)=-6;
A(m+2,m+2)=-6;A(m+2,m+1)=6;
for j=2:m+1
A(j,j)=4;
A(j,j-1)=1;
A(j,j+1)=1;
end
% A=[6 -6 0 0 0 0 0 0 0 0 0 0;
% 1 4 1 0 0 0 0 0 0 0 0 0;
% 0 1 4 1 0 0 0 0 0 0 0 0;
% 0 0 1 4 1 0 0 0 0 0 0 0;
% 0 0 0 1 4 1 0 0 0 0 0 0;
% 0 0 0 0 1 4 1 0 0 0 0 0;
% 0 0 0 0 0 1 4 1 0 0 0 0;
% 0 0 0 0 0 0 1 4 1 0 0 0;
% 0 0 0 0 0 0 0 1 4 1 0 0;
% 0 0 0 0 0 0 0 0 1 4 1 0;
% 0 0 0 0 0 0 0 0 0 1 4 1;
% 0 0 0 0 0 0 0 0 0 0 6 -6];
B=[1 4 1 0;-3 0 3 0;3 -6 3 0;-1 3 -3 1];
V=inv(A)*(6*P)';
j=1;
for i=1:1:m-1
for u=0:0.001:1
theta_i=1/6*[1 u u*u u*u*u]*B*[V(i,:);V(i+1,:);V(i+2,:);V(i+3,:)];
inter_path(j,1)=theta_i(1,1);
inter_path(j,2)=theta_i(1,2);
inter_path(j,3)=theta_i(1,3);
j=j+1;
end
end
%plot(inter_path(:,1),inter_path(:,2));
d_heng
- 粉丝: 0
- 资源: 1