Эти вопросы заданы несколько раз, и я видел много потоков, но мой запрос очень специфичен. Как увидеть, перекрываются ли два прямоугольника. Тест, который обнаруживает ошибку в моем коде:Проверьте, не пересекаются ли два прямоугольника
l2 = новый RectanglePoint (0, 7);
r2 = новый RectanglePoint (6, 10);
l1 = новый RectanglePoint (0, 7);
r1 = новый RectanglePoint (6, 0);
Вызов функции: isOverlap (новый прямоугольник (l1, r1), новый прямоугольник (l2, r2));
Мой код:
class RectanglePoint {
int x;
int y;
public RectanglePoint(int x, int y) {
this.x = x;
this.y = y;
}
}
class Rectangle {
RectanglePoint topLeft;
RectanglePoint bottomRight;
public Rectangle(RectanglePoint topLeft, RectanglePoint bottomRight) {
this.topLeft = topLeft;
this.bottomRight = bottomRight;
}
}
public class RectangleOverlap {
public boolean isOverlap(Rectangle rect1, Rectangle rect2) {
return isOverlapHelper1(rect1.topLeft, rect1.bottomRight, rect2.topLeft,
rect2.bottomRight);
}
private boolean isOverlapHelper1(RectanglePoint topLeftA,
RectanglePoint bottomRightA, RectanglePoint topLeftB,
RectanglePoint bottomRightB) {
if (topLeftA.y < bottomRightB.y || topLeftB.y < bottomRightA.y) {
return false;
}
if (topLeftA.x > bottomRightB.x || topLeftB.x > bottomRightA.x) {
return false;
}
return true;
}
Это ошибка в условии: если (topLeftA.y < bottomRightB.y || topLeftB.y < bottomRightA.y)
Пожалуйста, помогите. Я уже много времени проводил в этом.
Что вы имеете в виду «ошибка находится в состояние..."? Какой результат вы ожидали и что получили? См. [Как создать минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve). –
В соответствии с условием: два прямоугольника никогда не перекрываются, но если я рисую два прямоугольника с помощью бумажного карандаша, то он перекрывается – ojas