Нечетные «метки» в Polygon при использовании OffsetPolygon из библиотеки Клипера Ангуса Джонсона

введите описание изображения здесь

Конечная цель этого кода — убедиться, что заказчик определяет фигуры, которые могут быть обработаны нашими … машинами. Чтобы сделать это, мы смещаем указанную форму внутрь на радиус бита, а затем возвращаем назад на ту же величину, округляя, таким образом, любые части, которые были бы слишком тонкими, чтобы в них поместиться бит. Для смещения многоугольника мы используем Ангуса Джонсона клипер библиотека, версия 5.1.6 (c ++).

Но, как видно на картинке, это приводит к неожиданным формам. На рисунке я сместил исходную форму (зеленую, в основном покрытую более поздним рисунком) с помощью -radius ClipperLib::OffsetPolygon чтобы получить желтую форму, а затем смещение по радиусу, чтобы получить красную форму.

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

Что может пойти не так, чтобы добиться вышеуказанного результата?

6

Решение

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

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector