Как найти минимальное расстояние между такси и Манхэттеном между двумя параллельными прямоугольниками? - PullRequest
3 голосов
/ 02 сентября 2011

Учитывая координаты левого верхнего угла обоих прямоугольников и координаты правого нижнего угла обоих прямоугольников, а также то, что прямоугольники параллельны друг другу, а также осям x и y, как найтиминимальное расстояние такси / манхэттен между двумя прямоугольниками?

1 Ответ

2 голосов
/ 03 сентября 2011

Все сводится к категоризации отношений между двумя прямоугольниками. Я предполагаю, что они не пересекаются. В этом случае возможны только две ситуации:

enter image description here

  1. 2-й прямоугольник полностью расположен в одной из четырех угловых секций 1-го прямоугольника
  2. Все остальные ситуации

В первом случае вы вычисляете расстояние Манхэттена между двумя противоположными углами (TL-BR, TR-BL, BR-TL, BL-TR)

Во втором случае вы берете либо разницу в координатах x, либо разницу в координатах y сторон прямоугольника (B-T, L-R, R-L, T-B) в зависимости от ситуации. Все это очень легко проверить с помощью нескольких операторов if или case.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...