怎样用Matlab 过三个点画外接圆?
想用function功能实现可添加子函数或嵌套函数,给出三个三角形顶点坐标(x,y),求画出这个三角形,并画处外接圆,输出圆心坐标和半径。。。。圆心公式已给出如图...
想用function 功能实现可添加子函数或嵌套函数,给出三个三角形顶点坐标(x,y),求画出这个三角形,并画处外接圆, 输出圆心坐标和半径。。。。圆心公式已给出如图
展开
1个回答
展开全部
可以这样做:
主程序
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
效果图
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询