如何确定2个圆圈是否重叠

时间:2016-09-15 01:15:05

标签: java

所以我正在创建一个类,并且必须根据它们的距离确定两个圆是否重叠。这就是我所拥有的:

cl

我的过程是,如果中心的距离小于它们的半径之和,则圆圈重叠。

2 个答案:

答案 0 :(得分:3)

您的错误是您尝试将距离与半径之和的平方进行比较。您想要将距离与半径之和进行比较。

或者,您可以将距离的 square 与半径之和的 square 进行比较,这样就无需使用Math.sqrt

另请注意,当您已经有ab引用时,变量thisother没有任何意义这两张碟。事实上,您错误地将ab都引用other。你可以解决这个问题如下。

public boolean overlaps(Disk other) {
    double xDistance = getX() - other.getX();
    double yDistance = getY() - other.getY();

    double sumOfRadii = getRadius() + other.getRadius();
    double distanceSquared = xDistance * xDistance + yDistance * yDistance;

    boolean isOverlapping = distanceSquared  < sumOfRadii * sumOfRadii;
    return isOverlapping;
}

答案 1 :(得分:2)

改变两件事:

Circle a = this; // "this" instead of "other"

并移除对Math.sqrt()

的调用