资源简介

对给定的点进行三次B样条插值,得到插值曲线,这里给定的点可以是二维平面上的点或三维点,注意输入的点矩阵要每行为一个点坐标,里面都有注释,可以自己简单修改封装成自己想要的带参函数,里面有测试的点数据,可以直接运行效果还不错哦!

资源截图

代码片段和文件信息

%============均匀三次B样条曲线插值===========
%输入:
%     X: 原始数据点
%输出:
%     均匀三次B样条曲线 [xyz]
%%
function CurvPoint = CBI()
%X=load(‘data.txt‘);
X = [0 0 1 ;0 1 1; 1 1 0;1 0 1];%每行为一个点
[mn] = size(X); % CSJ: m 为点个数,n 为点维数
%A:方程系数-----------------------------
A=zeros(m+2); % CSJ:为了使曲线通过起始和末端点增加 2 行系数
A(11)=1;A(12)=-2;A(13)=1;
A(m+2m)=1;A(m+2m+1)=-2;A(m+2m+2)=1;
for i=2:(m+1)
    A(ii-1)=1;
    A(ii)=4;
    A(ii+1)=1;
end
%e:方程右边.得到的控制点首尾与插值数据相同.且与控制首末连线相切
e = zeros(m+2n);
for i=2:m+1
    e(i:)=6*X(i-1:);
end
%得到 d Boor 控制点
d=inv(A)*e;   % A * d =e
%画出图形
hold on
%原始数据红色点
plot3(X(:1)X(:2)X(:3)‘r.‘);
%控制多边形蓝色线
%plot3(d(:1)d(:2)d(:3)‘b‘);
%插值B样条曲线
uu=(0:0.01:1);
Num = length(uu);
x = zeros(Num1);
y = zeros(Num1);
z = zeros

评论

共有 条评论