当前位置: 首页 > 面试题库 >

查找一个圆是否在另一个圆内

公孙霖
2023-03-14
问题内容

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

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

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



 类似资料:
  • 我正在寻找一些解决方案,如果给定一组具有2D中心点和半径的圆,则在中返回一个最小子集,该子集完全覆盖具有2D中心点和半径的特定圆。最后一个圆圈不在中。 我已经选择了圆形,但如果我们把它们改成正方形、六边形等也没关系。

  • 我有一个用lat/long表达的观点 我有一个以米表示的半径值。我需要检查另一个点,也用拉特/long表示,是否在圆内。 如果我在平面上,我可以简单地使用公式 正如这些答案所深刻解释的那样。 然而,根据纬度/经度的用法,我不能使用这个公式,因为行星是球形的。 如何计算从任何给定点到中心的距离以与半径进行比较?

  • 对于不懂几何或公式的人来说,这是一个非常简单的问题。我需要知道两个圆是否相交。就这样。 我有两个圆圈:圆圈1和圆圈2。这两个圆的大小相同,半径相同。他们永远不会有所不同。我需要一个公式来显示这些圆圈是否重叠。我不在乎在哪里。我不在乎多少。我不在乎任何细节,而是真假。圆圈是否重叠?我只需要一些我可以在Javascript中得到的东西。 这里的公式对我不起作用。如何检测一个圆和同一平面上的任何其他圆的

  • 我有一个Java Swing任务,目标如下: 当程序启动时,它会绘制20个未填充的圆,每个圆的半径和位置随机确定。 如果一个圆的周长线不与任何其他圆相交,则用红色画出该圆的轮廓。如果它至少与另一个圆相交,请用黑色绘制它。 添加一个JButton,每次按下JButton,就会创建一组新的圆,如上所述。 这些圆相距太远,不能共享一个周长点,即它们中心之间的距离大于它们半径的和(d>r1+r2)。示例。

  • 我试图通过一个元素在表中找到一行,然后在该行中找到一个元素并返回一个属性(或者做其他事情)。 这里的JavaSelenium代码查找一个表体。getText()准确地打印出每行中的文本,但s.findElement(xpath)除外。getText()将返回唯一的\u单元格\u名称,无论行是否包含该名称。并且if语句将在每个循环中输入。 我怎么修理它?为什么getText()返回正确的文本,但在同

  • 我试着把第二个播放器放在一个有圆角的框架内(这个答案和这个答案),但是播放器总是会跳出父框架并绘制视频的完整矩形。 我发现这个解决方案使用GLSurfaceView,但是这个解决方案使用经典的MediaPlayer而不是ExoPlayer。