重叠或相交圆计算

时间:2015-11-29 07:44:11

标签: java geometry algebra

我有一个关于编写java程序的问题,并且在程序的一部分中检查圆圈是否在任何点重叠或交叉,并显示它们是否存在。

我相信这样做的公式是 (r1 + r2)^ 2< =(x2-x1)^ 2 +(y2-y1)^ 2

将此公式应用于我的代码后,无法检测是否重叠或相交。

    //variables
    //crOneRadius = radius of circle 1
    //crTwoRadius = radius of circle 2
    //crOneCenterX = x axis location of circle 1
    //crOneCenterX = y axis location of circle 1
    //crTwoCenterX = x axis location of circle 2
    //crTwoCenterX = y axis location of circle 2     
    //BOoverlap = is boolean if it is ovelapping circles set to true
    if((crOneRadius+crTwoRadius)*(crOneRadius+crTwoRadius)<=((crTwoCenterX-crOneCenterX)*(crTwoCenterX-crOneCenterX))+((crTwoCenterY-crOneCenterY)*(crTwoCenterY-crOneCenterY)))
        BOoverlap=true;//overlap is true

1 个答案:

答案 0 :(得分:1)

两个中心dC1之间的距离C2必须小于圆圈r1 + r2的总和,以便拦截:

enter image description here

|C1 - C2| <= r1 + r2

平衡双方

(x1 - x2)ˆ2 + (y1 - y2)^2 <= (r1 + r2)^2

(r1 + r2)^2 >= (x1 - x2)^2 + (y1 - y2)^2,

这与你正在使用的条件相反。