2016-09-19 11 views
0

У меня есть один главный (красный) прямоугольник и несколько других прямоугольников, которые случайным образом пересекают основной прямоугольник.Как получить непересекающуюся область CGRect с несколькими пересечениями?

Как я могу получить область без пересечения основного прямоугольника (красная область)?

see preview

+0

Если у вас есть координаты четырех вершин каждого прямоугольника, вы можете вычесть поверхность частей каждого серого прямоугольника внутри красного прямоугольника из общей поверхности красного прямоугольника. Этого не должно быть слишком сложно. –

ответ

0

Это очень сильно зависит от того, что вы имеете в виду под «есть» и «получить». Каковы форматы ввода и вывода? Вы хотите последовательность точек или просто область? Это для общего решения или просто для упрощенного случая?

Для быстрого общего решения я настоятельно рекомендую BOOST polygon library (раскрытие: я был одним из рецензентов для презентации конференции BOOST). Это обрабатывает произвольные многоугольники, включая дырки, и делает прекрасную работу всех основных операций полигона.

Простой полигон - это последовательность точек. Вы можете создавать наборы полигонов. В этом случае объявите все ваши полигоны; поместите красный прямоугольник в набор A, серый - в набор B. Затем A-B возвращает желаемый отображаемый многоугольник.