Объединить (логическое объединение) прямоугольные области с целочисленной точностью

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

Box collection

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

Это часть пользовательского интерфейса реального времени, поэтому алгоритм должен быть достаточно быстрым (я никогда не угадываю больше дюжины или около того ящиков, может быть, сотни).

Я делаю это на C #, но поскольку это алгоритмический вопрос, меня не волнует язык. Любые идеи приветствуются.

5
задан David Rutten 28 September 2010 в 18:46
поделиться