博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
matlab练习程序(多圆交点)
阅读量:6358 次
发布时间:2019-06-23

本文共 1132 字,大约阅读时间需要 3 分钟。

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

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

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

相切圆求法:

  1.根据两圆心求直线

  2.求公共弦直线方程

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

相交圆求法:

  1.求公共弦方程直线。

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

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

结果如下:

matlab代码如下:

main.m:

clear all;close all;clc;n=20;cic=rand(n,3); %(x,y,r)hold on;for i=1:n-1    for j=i+1:n        cic1=cic(i,:);        cic2=cic(j,:);        p=circleCross(cic1,cic2);        if ~isempty(p)            plot(p(:,1),p(:,2),'.');        end    endendfor i=1:n    theta=0:0.001:2*pi;    x=cic(i,1)+cic(i,3)*cos(theta);    y=cic(i,2)+cic(i,3)*sin(theta);    plot(x,y,'-');endaxis equal

circleCross.m:

function p=circleCross(cic1,cic2)    x0=cic1(1);    y0=cic1(2);    r0=cic1(3);    x1=cic2(1);    y1=cic2(2);    r1=cic2(3);    d=sqrt((x0-x1)^2+(y0-y1)^2);    %两圆心距离    k1=(y0-y1)/(x0-x1);         %连接两圆心直线    b1=y1-k1*x1;    k2=-1/k1;               %公共弦方程直线    b2=(r0^2-r1^2-x0^2+x1^2-y0^2+y1^2)/(2*(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)

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

转载于:https://www.cnblogs.com/tiandsp/p/4017845.html

你可能感兴趣的文章
基本的排序算法
查看>>
我的友情链接
查看>>
053-017
查看>>
nginx运行检测脚本
查看>>
lvs+keepalive构建负载均衡及服务器集群之三测试高可用LVS负载均衡集群系统
查看>>
Maven本地分仓
查看>>
SQL语句优化
查看>>
Redis原理主从配置解析
查看>>
Linux基本命令——备份与恢复文档
查看>>
Spring Boot(1-2) 使用Gradle构建Spring Boot项目
查看>>
附1:多线程并发方案的不足——响应式Spring的道法术器
查看>>
LoadRunner用户行为模拟器 《第三篇》
查看>>
SELinux基础
查看>>
Ofbiz12.04 进阶之二 如何使用eclipse来调试 ofbiz
查看>>
jsp 教程(一)
查看>>
php连接mongodb集群
查看>>
Linux通配符简介
查看>>
分布式机器学习框架-百度的PADDLE(计划开源)
查看>>
MYSQL的安装
查看>>
雅虎35条优化黄金守则
查看>>