怎样用Matlab 过三个点画外接圆?

想用function 功能实现可添加子函数或嵌套函数,给出三个三角形顶点坐标(x,y),求画出这个三角形,并画处外接圆, 输出圆心坐标和半径。。。。圆心公式已给出如图

可以这样做:

主程序

clc;clear
A=[1,2];
B=[2,3];
C=[1,4];
[CC,Radius]=CircleThru3Dots(A,B,C);
fprintf('坐标:(%f,%f)\n',CC)
fprintf('半径:%f\n\n',Radius)

函数程序

function [CC,Radius]=CircleThru3Dots(A,B,C)
Ah=A*A';
Bh=B*B';
Ch=C*C';
CC=zeros(size(A));
G=(C(2)-B(2))*A(1)+(A(2)-C(2))*B(1)+(B(2)-A(2))*C(1);
CC(1)=((Bh-Ch)*A(2)+(Ch-Ah)*B(2)+(Ah-Bh)*C(2))/(2*G);
CC(2)=-((Bh-Ch)*A(1)+(Ch-Ah)*B(1)+(Ah-Bh)*C(1))/(2*G);
Radius=sqrt((A-CC)*(A-CC)');
theta=linspace(0,2*pi,101);
x=CC(1)+Radius*cos(theta);
y=CC(2)+Radius*sin(theta);
plot(x,y,'r-')
ABC=[A;B;C];
hold on
plot(ABC(:,1),ABC(:,2),'b.','markersize',20)
plot(CC(1),CC(2),'r.','markersize',20)
grid on
box off
axis equal
end

效果图

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答