我有点麻烦。我有一项作业,要求我查找第二个圆圈是否重叠,内部是否重叠或两者都不重叠。但是,我在检查重叠以及第二个圆是否在第一个圆内时遇到了麻烦。

(使用的变量为x1,x2,y1,y2,r1,r2,距离)

这是我所拥有的:

if (distance > (r1 + r2)) {
        // No overlap
        System.out.println("Circle2 does not overlap Circle1");
    } else if (distance <= Math.abs(r1 + r2)) {
        // Overlap
        System.out.println("Circle2 overlaps Circle1");
    } else if ((distance <= Math.abs(r1 - r2)) {
        // Inside
        System.out.println("Circle2 is inside Circle1");
}

我担心问题在于重叠和内部检查,但是我无法弄清楚如何正确设置它,因此我可以可靠地检查第二个圆是否在第一个圆的内部。

当我尝试了多种方法时,任何帮助或建议都将不胜感激,但是解决方案每次都让我无所适从。

最佳答案

您只需要在重叠之前检查一下内部,因为内部的距离小于等于重叠的距离

if (distance > (r1 + r2))
{
    // No overlap
    System.out.println("Circle2 does not overlap Circle1");
}
else if ((distance <= Math.abs(r1 - r2))
{
    // Inside
    System.out.println("Circle2 is inside Circle1");
}
else              // if (distance <= r1 + r2)
{
   // Overlap
   System.out.println("Circle2 overlaps Circle1");
}

根据克里斯的评论修改答案

关于java - 查找一个圆是否在另一个圆内,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9486520/

10-11 16:13