[matlab] 10.最小覆盖圆
Posted clemente
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[matlab] 10.最小覆盖圆相关的知识,希望对你有一定的参考价值。
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
以上是关于[matlab] 10.最小覆盖圆的主要内容,如果未能解决你的问题,请参考以下文章