ctrlPs =CalCtrlPs(InterPs); %以给定的型值点,计算控制顶点
plot(ctrlPs(:,1),ctrlPs(:,2),'k.','MarkerSize',15);
plot(ctrlPs(:,1),ctrlPs(:,2));
%绘制三次B样条曲线
N = length(ctrlPs(:,1))-3; %四个控制顶点决定一段三次B样条曲线,故共拟合N-3段
for i=1:N
DrawUniformBSp(ctrlPs(i:i+3,:)); %每次给DrawUniformBSp函数循环送入四个控制顶点
end
%绘制完成提示音
load train
sound(y,Fs)
%%%%%%%%%%%%将实验结果集中写入到test.txt文件中%%%%%%%%%%%%
m=length(InterPs(:,1)); %求出InterPs矩阵第一列的长度
fid=fopen('test.txt','wt'); %打开文件以写入,以文本模式打开文件test.txt
fprintf(fid,'****************************欢迎使用三次B样条曲线拟合系统!****************************\n\n');
fprintf(fid,'Ⅰ您构造的曲线为三次B样条曲线。\n\n');
%将型值点坐标写入文件
fprintf(fid,'Ⅱ程序采集到您一共选取了%d个型值点,这些点的横纵坐标分别为\n',m);
fprintf(fid,'%6.4s %14.4s\r\n','x','y'); %指定字符串输出到test.txt文件中的格式(宽度以及保留小数点后几位)。如%12.4s中,s表示为字符串,12表示字符串‘y’占用12个宽度,4代表数据精度保留到小数点后四位
for i=1:m
fprintf(fid,'%8.4f %14.4f\r\n',InterPs(i,:)); %f指定为浮点型数据float,将InterPs的第i行数据,即一组型值点坐标写入到test.txt文件中
end
fprintf(fid,'\n');
%将控制顶点坐标写入文件
fprintf(fid,'Ⅲ程序计算得到%d个控制顶点,这些控制顶点的横纵坐标分别为\n',N+3);
fprintf(fid,'%6.4s %14.4s\r\n','x','y'); %指定字符串输出到test.txt文件中的格式(宽度以及保留小数点后几位),同上
for i=1:N+3
fprintf(fid,'%8.4f %14.4f\r\n',ctrlPs(i,:)); %f指定为浮点型数据float,将ctrlPs的第i行数据,即一组控制顶点坐标写入到test.txt文件中,同上
end
fprintf(fid,'\n');
fprintf(fid ,'Ⅳ恭喜您最终得到%d段三次B样条曲线!\n\n',N);
fprintf(fid,'***************************************Enjoy it!**************************************');
fclose(fid);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
saveas(gcf,'test.jpg'); %保存拟合的图像