-
大小: 2KB文件类型: .m金币: 1下载: 0 次发布日期: 2021-06-03
- 语言: Matlab
- 标签: uniform cubic B-spline interpolate
资源简介
对给定的点进行三次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
评论
共有 条评论