Как я могу вычислить минимальное расстояние между двумя прямоугольниками?
Это легко для прямоугольников, которые не имеют никаких углов (т.е. 0
градусы один), но для повернутых прямоугольников с любыми различными углами, которые я не знаю, как сделать это.
Можно ли рекомендовать какой-либо путь?
WhiteFlare
Проверьте, пересекаются ли они первыми (попробуйте взять точку из одного прямоугольника и проверьте, находится ли она внутри другого прямоугольника).
Есть несколько способов сделать это. Один из способов ( не самый лучший , но легко объяснимый) заключается в следующем.
Пусть A1
, A2
, A3
, A4
- точки прямоугольника, T
- другая точка .
Затем подсчитайте квадраты для треугольников:
S1 = (A1, A2, T)
, S2 = S (A2, A3, T)
, S3 = S (A3 , A4, T)
, S4 = S (A4, A1, A2)
.
Пусть S_rectangle
будет прямоугольным квадратом.
Тогда T
лежит внутри прямоугольника <=> S1 + S2 + S3 + S4 = S_rectangle
.
Если реакционные углы не пересекаются, выполните следующие действия.
Вычислить координаты всех 8 точек 2 прямоугольников.
Возьмите минимум среди всех 4 * 4 = 16 пар точек (точек из разных прямоугольников).
Обозначим его min_1
.
Затем возьмите некоторую точку из первого прямоугольника (4 способа сделать это),
возьмите 4 сегмента другого прямоугольника (4 способа),
проверьте, что любой из перпендикуляра из этой точки в этот сегмент попадает внутрь сегмента.
Возьмите минимум таких перпендикуляров. Обозначим его min_2
.
То же, что и в 3
, но возьмите точку из второго прямоугольника, строки из первого:
вы получите min_3
.
result = min (min_1, min_2, min_3)