UniLecs #Task. Rectangle intersection

Albert Davletov
UniLecs
Published in
2 min readJun 14, 2020

Задача: на плоскости даны два прямоугольника, каждый прямоугольник задан координатами левого нижнего и правого верхнего угла. Найдите площадь пересечения этих прямоугольников.

Входные данные:

  • (x1,y1) — координаты левого нижнего угла 1го прямоугольника;
  • (x2,y2) — координаты правого верхнего угла 1го прямоугольника;
  • (x3,y3) — координаты левого нижнего угла 2го прямоугольника;
  • (x4,y4) — координаты правого верхнего угла 2го прямоугольника;

Примечание: координаты — целые числа в диапазоне [−10000, 10000].

Вывод: площадь пересечения данных прямоугольников.

Пример:

(1, 1) — (4, 3)

(2, 2) — (6, 4)

Output: 2.

Разбор

Задачу можно решить следующим способом:

  1. Сначала нужно найти координаты пересечения прямоугольников:
  • левая граница пересечения это максимум из левых границ данных прямоугольников,
  • правая граница — минимум из правых границ,
  • нижняя граница — максимум из нижних границ прямоугольников,
  • верхняя граница — минимум из верхних границ.

2. Затем посчитаем длины сторон прямоугольника и перемножим их.

Случай, когда прямоугольники не пересекаются, возникает когда левая граница пересечения окажется больше правой, или когда нижняя граница окажется больше верхней.

Реализация

C#

https://gist.github.com/unilecs/8e70748a4d4d47a1f54dabd758866a21

Play-test

https://dotnetfiddle.net/3WFTIl

--

--