Я нашел что-то НЕ смешное с прямоугольниками:
Допустим, даны значения левой, верхней, правой и нижней координат, и все эти координаты предназначены для включения.
Итак, вычисление ширины выглядит так:
width = right - left + 1
Пока все логично. Но!
Ширина нуля (что иногда имеет смысл) должна храниться как:
right = left - 1
, который создает проблемы, когда речь идет о следующих операциях:
- Сортировка координат прямоугольника (чтобы он шел слева направо, сверху вниз)
- Циклический
Хорошо, конечно, эти вещи могут быть обработаны с помощью дополнительного кода для особого случая Width == 0
, но, если серьезно, нет ли лучшего решения, стандартного шаблона или наилучшей практики для этого?
Edit:
В настоящее время я отказался от "сортировки" координат в моем коде и заменил ее утверждением о том, что прямоугольник должен быть оставлен -> вправо, вверх -> вниз, но серьезно ...