知道一段圆弧上的几个坐标点,如何通过这几个坐标点拟合一个圆出来?用matlab
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励20(财富值+成长值)
1个回答
展开全部
代码:
clear all;
clc;
close all;
%已知随便三点,不在同一条直线上的三点确定一个圆?
A1=[0 0];
A2=[1 1];
A3=[0 4];
%求圆心坐标
A=[A1-A2;A2-A3];
B=([sum(A1.^2-A2.^2); sum(A2.^2-A3.^2)])/2;
if det(A)~=0
O=(A\B)';%O=[x y]是圆心坐标
r=sqrt(sum((O-A1).^2));%三点找一点算半径
else
error('不是三角形');%三点共线,不形成三角形就无解
end
%画图
cc=[A1;A2;A3];
plot(cc(:,1),cc(:,2),'r*');
hold on;
plot(O(1),O(2),'rO');
sita=0:pi/20:2*pi;
x=r*cos(sita)+O(1);
y=r*sin(sita)+O(2);
plot(x,y)
clear all;
clc;
close all;
%已知随便三点,不在同一条直线上的三点确定一个圆?
A1=[0 0];
A2=[1 1];
A3=[0 4];
%求圆心坐标
A=[A1-A2;A2-A3];
B=([sum(A1.^2-A2.^2); sum(A2.^2-A3.^2)])/2;
if det(A)~=0
O=(A\B)';%O=[x y]是圆心坐标
r=sqrt(sum((O-A1).^2));%三点找一点算半径
else
error('不是三角形');%三点共线,不形成三角形就无解
end
%画图
cc=[A1;A2;A3];
plot(cc(:,1),cc(:,2),'r*');
hold on;
plot(O(1),O(2),'rO');
sita=0:pi/20:2*pi;
x=r*cos(sita)+O(1);
y=r*sin(sita)+O(2);
plot(x,y)
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询