У меня есть квадрат в 2d пространстве (ширина = высота).Квадрат в настоящее время определяется двумя точками: BottomLeft (X1, Y1) и TopRight (X2, Y2).
Квадрат выровнен по оси, поэтому найти два других угла так же просто, как (X1, Y2)) и (X2, Y1).
У меня также есть две точки - одна всегда внутри квадрата, а другая определенно снаружи.Они не обязательно находятся в центре площади - они могут быть где угодно.Я тоже знаю их координаты.
Мне нужно найти точку пересечения между отрезком, определяемым этими двумя точками, и стороной квадрата.Я также хочу знать, с какой стороны площади я пересеклась.Что меня беспокоит, так это случаи, когда линия идет по диагонали и близко к углу квадрата - например, она может пересекать верхнюю или боковую линию.
Метод грубой силы - попытаться вычислитьпересечения для каждой стороны квадрата и проверьте, существует ли он.Его можно оптимизировать, рассчитав, где относительно квадрата находится вторая точка, и отбросив две линии (например, если координаты X и Y увеличиваются, нет необходимости проверять нижнюю и левую стороны квадрата).
Мне интересно, есть ли лучшее / более быстрое решение моей проблемы?Я буду писать на Java