求助:CAD的样条插值算法

来源:百度知道 编辑:UC知道 时间:2024/05/25 08:05:15
在CAD中,用鼠标点四个点画出一条B样条曲线,其中含有六个控制点,我想问一下控制点是怎么求出来的,急,请大侠帮帮忙...
就是说,在四个拟合点(插值点)已知的情况下,算出它的控制多边形的六个点的坐标,怎么算出来, 麻烦说的详细一点哈,谢谢 (附CAD中DXF文件中的拟合点和控制点的坐标)

%============均匀三次B样条曲线插值===========

%定义变量:
%X:原始资料,d:控制顶点
%n:数据条数,k:B样条的次数

%/*======Copyright@时光牧者( http://hi.baidu.com/junus ).==========*/
%/*======Email: firt123@163.com ==============================*/

X=load('data.txt');
n=length(X); %得数据维数;

%A:方程系数-----------------------------
A=zeros(n+2);
A(1,1)=1;A(1,2)=-2;A(1,3)=1;
A(n+2,n)=1;A(n+2,n+1)=-2;A(n+2,n+2)=1;
for i=2:(n+1)
A(i,i-1)=1;
A(i,i)=4;
A(i,i+1)=1;
end

%e:方程右边.得到的控制点首尾与插值数据相同.且与控制首末连线相切
e=[0,0];
e(n+2,:)=[0,0];
for i=2:n+1
e(i,:)=6*X(i-1,:);
end

%得到控制点,
d=inv(A)*e;

%画出图形
hold on
%原始数据,红色,点
plot(X(:,1),X(:,2),'r.');
%控制多边形,蓝色,线
plot(d(:,1),d(:,2),'b');

%插值B样条曲线
uu=(0:0.01:1);
x=0;y=0;
for j