所以我正在创建一个类,并且必须根据它们的距离确定两个圆是否重叠。这就是我所拥有的:
cl
我的过程是,如果中心的距离小于它们的半径之和,则圆圈重叠。
答案 0 :(得分:3)
您的错误是您尝试将距离与半径之和的平方进行比较。您想要将距离与半径之和进行比较。
或者,您可以将距离的 square 与半径之和的 square 进行比较,这样就无需使用Math.sqrt
。
另请注意,当您已经有a
和b
引用时,变量this
和other
没有任何意义这两张碟。事实上,您错误地将a
和b
都引用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()