clear all;
close all;
clc;

n=100;
p=rand(n,2);

p1=p(1,:); %取第一行的值 P1点
p2=p(2,:); %取第二行的值 P2点
r=sqrt((p1(1)-p2(1))^2+(p1(2)-p2(2))^2)/2; %求两点半径
cenp=(p1+p2)/2;   %求两点中点

for i=3:n
    newp=p(i,:);    %从第三行开始 储存新的点
    d=sqrt((cenp(1)-newp(1))^2+(cenp(2)-newp(2))^2);  %圆心到新的点的距离为d
    if d>r %当距离大于现有半径的时候,赋值更大的半径
        r=(r+d)/2;
        cenp=cenp+(d-r)/d*(newp-cenp); %按比例位移中心
    end    
end

hold on;
plot(p(:,1),p(:,2),'rs');
x0=cenp(1); %圆心横坐标
y0=cenp(2); 
theta=0:0.01:2*pi;
x=x0+r*cos(theta);
y=y0+r*sin(theta);
plot(x,y,'k-',x0,y0,'k.');
axis equal
最小覆盖圆

相关文章:

  • 2022-02-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-15
猜你喜欢
  • 2021-06-18
  • 1970-01-01
  • 2022-12-23
  • 2021-11-16
相关资源
相似解决方案