首先过三点拟合圆 在再画出圆弧
过三点拟合圆的程序参见
http://www.matlabsky.com/thread-290-1-1.html 下面举个例子吧,比如给出三点A(1,2) B(5,6) C(3,5)
%by dynamic
%see also
http://www.matlabsky.com %2009.2.19
%
%根据三点逆时针绘制圆弧
A=[1 2];
B=[5 6];
C=[3 5];
[c,r]=calcCircle(A,B,C); %这里需要用到上面的那个函数
http://www.matlabsky.com/thread-290-1-1.html a=c(1);
b=c(2);
th=[A;B;C];
th2=[th(:,1)-a th(:,2)-b];
theta=atan2(th2(:,2),th2(:,1));
[theta_max,num_max]=max(theta);
[theta_min,num_min]=min(theta);
t=linspace(theta_min,theta_max,100);
%t=0:0.1:2*pi;
a=c(1);
b=c(2);
x=r*cos(t)+a;
y=r*sin(t)+b;
plot(x,y,'r-',th(:,1),th(:,2),'o')
axis equal