我遇到了一些麻烦。我的作业要求我找出第二个圆圈是否重叠、在内部或两者都不重叠。但是,我无法检查重叠以及第二个圆圈是否在第一个圆圈内。
(使用的变量是 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/