У меня есть программа, которая позволяет вам перемещать различные фигуры. Я хочу иметь возможность возвращать логическое значение, которое возвращает истину, если две фигуры пересекаются. Это то, что я имею до сих пор:
public boolean overlaps(MyShape s){
Rectangle2D.Double otherShapeBoundary
= new Rectangle2D.Double(s.getX(), s.getY(), s.getWidth(), s.getHeight());
PathIterator pi = path.getPathIterator(null);
return path.intersects(pi,otherShapeBoundary);
}
... где путь - это GeneralPath (все они прямо из API, кроме MyShape).
В одном я не уверен, как работает PathIterator, что может быть проблемой. Я также пробовал это, но я получаю похожую ошибку:
public boolean overlaps(OverlappableSceneShape s){
Rectangle2D.Double otherShapeBoundary
= new Rectangle2D.Double(s.getX(), s.getY(), s.getWidth(), s.getHeight());
return path.intersects(otherShapeBoundary);
}
Ошибка в том, что этот метод почти всегда возвращает false. Я не уверен, когда / почему он возвращает истину, но это очень редко.