五、贝切尔曲线拼接
%BezierTest.m文件,这是主文件
clear all;
clc;
leftbase=10;
bottombase=10;
figure();
uicontrol('Style','pushbutton','string','绘制Bezier曲线并连接','position',[200+leftbase 200+bottombase 150 60],...
'callback','bezier_callback');
%mainfunction.m文件,这是这界面函数
function mainfunction()
%主函数
%获取两条被切尔曲线的控制点
prompt={'P0 x坐标','P0 y坐标','P1 x坐标','P1 y坐标','P2 x坐标','P2 y坐标','P3 x坐标','P3 y坐标'};%设置提示字符串
title='第一条Bezier曲线控制点坐标';%设置标题
numline=1;%指定输入数据行数
defdata={'0','0','0','3','1','5','2','3'};%指定数据的默认值
Resize='on';%设置对话框大小为可调节的
answer=inputdlg(prompt,title,numline,defdata,Resize);
%将输入的cell类型数据转换为整数
data=str2num(char(answer));
%检测用户是否点击了取消按钮
if length(data)<8
return ;
end
BP1=[];
for i=1:4
BP1=[BP1;[data(2*i-1),data(2*i)]];
end
prompt={'Q1 x坐标','Q1 y坐标','Q2 x坐标','Q2 y坐标','Q3 x坐标','Q3 y坐标','比例因子a'};%设置提示字符串
title='第二条Bezier曲线控制点坐标';%设置标题
defdata={'3','2','4','4','3','5','1'};%指定数据的默认值
answer=inputdlg(prompt,title,numline,defdata,Resize);
data=str2num(char(answer));
%检测用户是否点击了取消按钮
if length(data)<6
return ;
end
a=abs(data(7));%比例因子;