Я пытаюсь проверить, пересекает ли линия набор прямоугольников.Функция intersectsLine() не работает должным образом
Это мой код:
public class Test {
public static void main(String args[]) {
Rectangle2D.Double rectangle1 = new Rectangle2D.Double(32, 64, 32, 32);
Rectangle2D.Double rectangle2 = new Rectangle2D.Double(0, 32, 32, 32);
Line2D.Double line = new Line2D.Double(36, 63, 5, 12);
System.out.println(rectangle1.intersectsLine(line)); // outputs false. Why?
System.out.println(rectangle2.intersectsLine(line)); // outputs true as expected
}
}
Как вы можете видеть, точка старта (36, 63) находится в пределах rectangle1
, но, по-видимому, этот отрезок не пересекает прямоугольник, она начинается в
Однако он пересекает прямоугольник, который хранит конечную точку (5, 12).
Любая идея, почему?
Как его получить, чтобы обнаружить пересечение?
линия не пересекает первый прямоугольник, поэтому Java дает вам правильный ответ. Возможно, вы смущены тем, как работает конструктор Rectangle2D.Double? –
Является ли это конструктором или функцией 'intersectsLine'? В любом случае, как я могу проверить, содержит ли Rectangle определенный сегмент линии? – Kingamere
Это, конечно, конструктор. Метод пересечений работает надлежащим образом. –