最近总是对计算几何方面的程序比较感兴趣。

多圆求交点,要先对圆两两求交点。

有交点的圆分为相切圆和相交圆。

相切圆求法:

  1.根据两圆心求直线

  2.求公共弦直线方程

  3.求两直线交点即两圆切点。

相交圆求法:

  1.求公共弦方程直线。

  2.公共弦直线方程和其中一个圆方程联立求解即可。

公共弦直线方程就是两圆方程的差。

结果如下:

matlab代码如下:

main.m:

clear all;close all;clc;

n=;
cic=rand(n,); %(x,y,r) hold on;
for i=:n-
for j=i+:n
cic1=cic(i,:);
cic2=cic(j,:);
p=circleCross(cic1,cic2);
if ~isempty(p)
plot(p(:,),p(:,),'.');
end
end
end for i=:n
theta=:0.001:*pi;
x=cic(i,)+cic(i,)*cos(theta);
y=cic(i,)+cic(i,)*sin(theta);
plot(x,y,'-');
end
axis equal

circleCross.m:

function p=circleCross(cic1,cic2)

    x0=cic1();
y0=cic1();
r0=cic1(); x1=cic2();
y1=cic2();
r1=cic2(); d=sqrt((x0-x1)^+(y0-y1)^); %两圆心距离 k1=(y0-y1)/(x0-x1); %连接两圆心直线
b1=y1-k1*x1; k2=-/k1; %公共弦方程直线
b2=(r0^-r1^-x0^+x1^-y0^+y1^)/(*(y1-y0)); p=[];
if d==abs(r1-r0) || d==r1+r0 %相切时的交点
xx=-(b1-b2)/(k1-k2);
yy=-(-b2*k1+b1*k2)/(k1-k2);
p=[xx yy];
elseif abs(r1-r0)<d && d<r1+r0 %相交时的交点
%公共弦方程与其中一个圆的交点
xx1=(-b2* k2 + x1 + k2 *y1 - sqrt(-b2^ + r1^ + k2^ *r1^ - *b2* k2* x1 - k2^* x1^ + *b2*y1 + *k2*x1*y1 - y1^))/( + k2^);
yy1=k2*xx1+b2; xx2=(-b2* k2 + x1 + k2 *y1 + sqrt(-b2^ + r1^ + k2^ *r1^ - *b2* k2* x1 - k2^* x1^ + *b2*y1 + *k2*x1*y1 - y1^))/( + k2^);
yy2=k2*xx2+b2; p=[xx1 yy1;xx2 yy2];
end end

多圆求交点我只能两两比较了,不知道有没有什么快速的方法。

最新文章

  1. Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL
  2. MySQL server version for the right syntax to use near 'TYPE=MyISAM'
  3. Java处理Radius access-challenge
  4. 1031MVCC和事务浅析
  5. Oracle连接出现TNS:no listener或者ORA-12514: TNS:listener does not currently know
  6. 破解 keyme2程序(固定明码比较)
  7. SQL拆分多规则的字符串分离数字。
  8. NDIS小鱼防火墙之拦截指定QQ登录
  9. poj 1080 dp如同LCS问题
  10. 【6】使用nginx
  11. Linux下对字符串进行MD5加密
  12. 关于Opencv2.4.x中stitcher类的简单应用
  13. java集合框架工具类Collections,集合的操作
  14. 【转】国外程序员整理的Java资源大全
  15. rails关于一个Action的多次或多个Action之间共享数据的思路
  16. SVN简单的使用
  17. SQLServer数据库镜像配置
  18. windows密码策略
  19. Choosing the Type at Runtime
  20. 【LeetCode】201. Bitwise AND of Numbers Range

热门文章

  1. 让VisualVM+BTrace进入unsafe mode
  2. 新浪微博客户端(3)-封装UIBarButtonItem
  3. select函数
  4. $key 的用法
  5. Tenth scrum meeting - 2015/11/4
  6. 修改Capfile,在正式环境不再使用migration修改数据库
  7. 纹理缓存(Texture Cache)
  8. linux 文件权限除了r、w、x外还有s、t、i、a权限:
  9. C++文件输入输出
  10. PHP exit() 输出