Задача заключается в объединении нескольких замкнутых полилиний в одну.
Сейчас я решаю эту задачу следующим образом:
- Создаю области (Region) из каждой полилинии
- Для каждой области провожу операцию объединения (BooleanOperation(BooleanOperationType operation, Region otherRegion))
- Разбиваю полученную область и получаю набор линий и дуг
- Объединяю все полученные объекты в одну полилинию
Этот алгоритм работает корректно, но с двумя большими минусами:
- очень долго - если обрабатываются сотни полилиний, то весь процесс может занимать минуту или больше
- не стабильно - бывают случаи, когда область не создается по полилинии, если у нее сложная геометрия, и итоговый результат получается неверным
Я хочу заменить работу с областями на какой-то другой алгоритм, но пока не знаю на какой. Какие способы объединения (вычитания и пересечения) знаете вы?
PS. команда для C3D, так что можно использовать объекты C3D )