Общий клипер полигонов
Эта статья нуждается в дополнительных цитатах для проверки . ( декабрь 2021 г. ) |
General Polygon Clipper ( GPC ) — это программная библиотека, позволяющая вычислять результаты операций обрезки наборов полигонов . компьютерной графики Он обобщает проблему отсечения пересечения многоугольников с многоугольниками. Первая версия GPC была разработана и реализована в 1997 году Аланом Муртой. По состоянию на август 2009 г. [update] последней версией GPC была версия 2.32. Основная библиотека GPC написана на языке программирования C , но библиотека также была портирована для работы с несколькими другими языками.
Доступность
[ редактировать ]С августа 2020 года GPC больше не распространяется автором официально.
В декабре 2021 года копия кода GPC (v2.32) была размещена на GitHub под лицензией MIT автором Paint.NET Риком Брюстером. [1]
Лицензирование
[ редактировать ]Разработчики могут использовать GPC для любых целей без платных лицензионных ограничений.
Особенности ГПК
[ редактировать ]Ниже кратко описаны функции и операции с полигонами, поддерживаемые GPC.
GPC может вычислять следующие операции обрезки: разница , пересечение , исключающее ИЛИ и объединение .
Полигоны могут содержать несколько непересекающихся контуров. Вершины контура могут быть указаны как по часовой стрелке, так и против часовой стрелки. Контуры могут быть выпуклыми, вогнутыми или самопересекающимися. Контуры могут быть вложенными. Другими словами, в многоугольниках могут быть дыры.
Выходные данные операции обрезки из GPC представляют собой набор полигональных контуров или триполосок. В выходных данных GPC различаются отверстия и внешние контуры. Совпадающие ребра и вырожденные области обрабатываются корректно.
Примеры операций GPC над множествами полигонов
[ редактировать ]Следующие четыре изображения показывают примеры вычислительных операций GPC между двумя наборами полигонов. Первый набор полигонов содержит контуры Соединенного Королевства и Ирландии. Второй набор многоугольников состоит из четырех больших стрелок, направленных внутрь. В каждом примере области, полученные в результате операции GPC между двумя наборами полигонов, отображаются в цвете.
В этом примере показана разница между двумя наборами:

В этом примере показано пересечение двух наборов:

В этом примере показано объединение двух наборов:

В этом примере показано исключающее ИЛИ между двумя наборами:

Порты и языковые привязки
[ редактировать ]Основной код GPC написан на C , но сообщество пользователей GPC внесло ряд портов и привязок (или оболочек) для различных других языков ( ActionScript 3 , Borland Delphi , C# , GNU Octave , Haxe , Haskell , Java , Lua , Паскаль , Perl , Python , VB.Net ). Все эти порты и привязки находятся в свободном доступе.
Ссылки
[ редактировать ]- ^ «ОбщийПолигонКлиппер» . GeneralPolygonClipper на GitHub . Проверено 22 декабря 2021 г.