Моя ситуация
- Вход: набор прямоугольников
- каждый прямоугольник состоит из 4 таких двойников: (x0, y0, x1, y1)
- они не "повернуты" под любым углом, все они являются "нормальными" прямоугольниками, которые идут "вверх/вниз" и "влево/вправо" относительно экрана.
- они размещаются случайным образом - они могут касаться краями, перекрываться или не иметь контакта
- У меня будет несколько сотен прямоугольников
- это реализовано в С#
Мне нужно найти
- Область, образованная их перекрытием - вся область в холсте, которая покрывает более одного прямоугольника (например, с двумя прямоугольниками, это будет пересечение)
- Мне не нужна геометрия перекрытия - только область (пример: 4 кв. дюймов).
- Перекрытия не должны учитываться несколько раз - например, представьте себе 3 прямоугольника, которые имеют одинаковый размер и положение - они расположены друг над другом - эта область должна быть подсчитана один раз (не три раза)
Пример
- На рисунке ниже представлены прямоугольники: A, B, C
- A и B перекрываются (как указано штрихами)
- Наложение B и C (как показано пунктиром)
- То, что я ищу, - это область, где отображаются тире.
-
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA--------------BBB
AAAAAAAAAAAAAAAA--------------BBB
AAAAAAAAAAAAAAAA--------------BBB
AAAAAAAAAAAAAAAA--------------BBB
BBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBB
BBBBBB-----------CCCCCCCC
BBBBBB-----------CCCCCCCC
BBBBBB-----------CCCCCCCC
CCCCCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCCC