Я сталкиваюсь с этой математической задачей, которая необходима для завершения моего заявления, поэтому я прошу помощи.
Дано 2 (или более, но в основном для 2) прямоугольника с 2 известными точками для каждого: Верхний левый (x1, y1) и Bottom -право (x2, y2) (я могу найти длину по этой информации, если это необходимо для решения проблемы).
TL(x1, y1)
+-----------------+
| |
| | TL(x3, y3)
| | +---------------------------+
+-----------------+ | |
BR(x2, y2) +---------------------------+
BR(x4, y4)
В любом случае можно ли определить, имеют ли они пересечение в области, я имею в виду, лежит ли какая-либо часть этого прямоугольника на какой-либо части другого?
Я искал и нашел небольшую помощь, но это не решает проблему:
Существует 4 условия, при которых два прямоугольника не пересекаются:
Левый край одного прямоугольника находится справа от правого края другого, это означает, что первый полностью лежит справа от второго, пересечения нет.
Правый край одного прямоугольника находится с левой стороны от левого края другого, это означает, что первый полностью уложен с левой стороны от второго, пересечения нет.
Верхний край одного прямоугольника находится под нижним краем другого, это означает, что первый полностью уложен под вторым, без пересечения.
Нижний край одного прямоугольника находится над верхним краем другого, это означает, что первый полностью положен над вторым, без пересечения.
Таким образом, я попытался изменить условия, то есть, если 4 из вышеперечисленных не происходит, прямоугольники могут пересекаться. Но я все еще могу найти условие (такое как на картинке выше), в котором 2 прямоугольника не удовлетворяют никакому условию и все еще не пересекаются.
Любая помощь высоко ценится, пожалуйста, покажите мне, как это сделать, или алгоритм, или код (только JS и PHP).
Большое спасибо!
* * Тысяча сорок-девять [х]