java - 判断一个圆圈是否在另一个圆圈内

标签 java math

我遇到了一些麻烦。我的作业要求我找出第二个圆圈是否重叠、在内部或两者都不重叠。但是,我无法检查重叠以及第二个圆圈是否在第一个圆圈内。

(使用的变量是 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");
} 

根据 Chris 的评论修改答案

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

相关文章:

java - Jackson:解析数组的数组

delphi - 为什么使用real进行计算与使用int进行计算会得出不同的结果?

math - 如何找到未旋转矩形内旋转矩形的尺寸,使面积最大化?

CSS 转换

c++ - 欧拉数展开

java - 在 CSS (JavaFX) 中为 TableView 设置样式

Java 似乎比 C++ 更快地执行基本算法。为什么?

java - 机器人,oauth 1.0a,抄写员=异常

java - VaadinFlow 中的样式网格

javascript - 如何为 CSS 计算圆的 x 和 y