Универсальный многоугольник Clipper - General Polygon Clipper

В Универсальный многоугольник Clipper (GPC) - программная библиотека, обеспечивающая вычисление результатов операций отсечения на наборах полигоны. Обобщает компьютерную графику проблема с обрезкой пересекающихся полигонов с полигонами. Первый выпуск GPC был разработан и реализован в 1997 году Аланом Мурта. По состоянию на август 2009 г. текущая версия GPC - 2.32. Основная библиотека GPC написана на Язык программирования C но библиотека также была портирована для работы с несколькими другими языками.

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

По состоянию на август 2020 года GPC больше не распространяется и не доступен.

Особенности GPC

Ниже приводится краткое описание функций и операций с полигонами, поддерживаемых GPC:

GPC может вычислять следующие операции клипа: разница, пересечение, Эксклюзивный или и союз.

Многоугольники могут состоять из нескольких непересекающихся контуров. Вершины контуров могут быть указаны как по часовой стрелке или против часовой стрелки. Контуры могут быть выпуклыми, вогнутыми или самопересекающимися. Контуры могут быть вложенными. Другими словами, в полигонах могут быть дыры.

Вывод операции обрезки из GPC представляет собой набор полигональных контуров или тристрипов. Отверстия и внешние контуры дифференцируются в выводе GPC. Совпадающие края и вырожденные области обрабатываются правильно.

Примеры операций GPC над множествами полигонов

На следующих четырех изображениях показаны примеры вычислительных операций GPC между двумя наборами многоугольников. Первый набор полигонов включает очертания Соединенного Королевства и Ирландии. Второй набор многоугольников состоит из четырех больших направленных внутрь стрелок. В каждом примере области, полученные в результате операции GPC между двумя наборами многоугольников, отображаются в цвете.

Этот пример показывает разница между двумя наборами:

Пример различия GPC

Этот пример показывает пересечение между двумя наборами:

Пример пересечения GPC

Этот пример показывает союз между двумя наборами:

Пример GPC Union

Этот пример показывает Эксклюзивный или между двумя наборами:

Пример GPC Exclusive-or

Порты и языковые привязки

Основной код GPC написан на C, но сообщество пользователей GPC предоставило ряд портов и привязок (или оболочек) для различных других языков (Скрипт действия 3, Borland Delphi, C #, GNU Octave, Haxe, Haskell, Ява, Lua, Паскаль, Perl, Python, VB.Net ). Все эти порты и привязки находятся в свободном доступе.

Лицензионные соглашения

Код GPC вместе со связанными с ним языковыми портами, привязками и примерами программного обеспечения распространяется бесплатно для загрузки и предназначен для неограниченной по времени оценки любым лицом или компанией. После оценки порядок использования GPC для проекта зависит от того, является ли проект некоммерческим или коммерческим, а именно:

  • Некоммерческое использование: GPC можно использовать бесплатно, без лицензии, в любом приложении, которое является строго некоммерческим (примеры: любители, академические исследования или преподавание).
  • Коммерческое использование: Чтобы использовать GPC для поддержки коммерческой деятельности (например, исследования и разработки продуктов), пользователи должны получить официальный Лицензия на коммерческое использование GPC.

внешняя ссылка