Clipper - an open source freeware library for
clipping and offsetting lines and polygons.
The Clipper library performs line & polygon clipping - intersection, union, difference & exclusive-or,
and line & polygon offsetting. The library is based on Vatti's clipping algorithm.
The download package contains the library's full source code (written in Delphi, C++ and C#),
numerous demos, a help file and links to third party Python, Perl, Ruby and Haskell modules.
Version: 6.1.3
Last updated: 19 January 2014
Freeware for both open source and commercial applications (Boost Software License).
Copyright © 2010-2014 Angus Johnson
Clipper's features compared with 3 other polygon clipping libraries:
* Speed tests were performed using the latest versions of all software as published on the respective websites (as of 11 April 2013). The benchmark test utility with full source code can be downloaded here. Tests were performed on a PC with 2.53 gigahertz Intel Core2 Duo P8700 processor with 4GB RAM running Window 7 Professional.
¹ The 'Classic 174239' test uses a test data sample from the PolyBoolean website here.
² The 'Complex Polygons' test consists of intersecting a single subject and single clip polygon with random vertices. Coordinates are rounded to multiples of 10 to substantially increase the frequency that more than two edges intersect at a given point. This "stress-tests" the clipping algorithms. (PolyBoolean and Boost Geometry could not be tested since they do not allow boolean operations on complex polygons.)
³ The errors in GPC's random polygon test are unhandled exceptions that result in a failure of the clipping operation.
An independent test of multiple polygon clipping libraries can be found here:
http://rogue-modron.blogspot.com/2011/04/polygon-clipping-wrapper-benchmark.html
C++
Delphi
C#
clipping and offsetting lines and polygons.
The Clipper library performs line & polygon clipping - intersection, union, difference & exclusive-or,
and line & polygon offsetting. The library is based on Vatti's clipping algorithm.
The download package contains the library's full source code (written in Delphi, C++ and C#),
numerous demos, a help file and links to third party Python, Perl, Ruby and Haskell modules.
Version: 6.1.3
Last updated: 19 January 2014
Freeware for both open source and commercial applications (Boost Software License).
Copyright © 2010-2014 Angus Johnson
- Screenshots of included demo applications
- Feature comparison with other polygon clipping libraries
- Online documentation
- Code snippets in C++, C# and Delphi showing how to use the Clipper library
- Download
Clipper's features compared with 3 other polygon clipping libraries:
Speed tests* (faster is better) ... | Features ... | Cost | ||||||
Classic 174239¹ | Ellipses & Fan | Ellipses & Rectangles | Overlap Stars | Complex Polygons² | Supports complex polygons | Miscellaneous | Free for commercial use | |
General Polygon Clipper | 2785 ms | 112 ms | 125 ms | 31 ms | Multiple errors³ | Yes | Last updated Dec 2004 | No |
PolyBool | 835 ms | 138 ms | 174 ms | 28 ms | N/A | No | Last updated Jun 2006 | No |
Boost Geometry | 78 ms | 43 ms | 33 ms | 25 ms | N/A | No | C++ only Depends on Boost Library | Yes |
Clipper | 113 ms | 31 ms | 36 ms | 9 ms | No errors | Yes | C++,C#,Delphi, Offsetting, Minkowski Sum | Yes |
* Speed tests were performed using the latest versions of all software as published on the respective websites (as of 11 April 2013). The benchmark test utility with full source code can be downloaded here. Tests were performed on a PC with 2.53 gigahertz Intel Core2 Duo P8700 processor with 4GB RAM running Window 7 Professional.
¹ The 'Classic 174239' test uses a test data sample from the PolyBoolean website here.
² The 'Complex Polygons' test consists of intersecting a single subject and single clip polygon with random vertices. Coordinates are rounded to multiples of 10 to substantially increase the frequency that more than two edges intersect at a given point. This "stress-tests" the clipping algorithms. (PolyBoolean and Boost Geometry could not be tested since they do not allow boolean operations on complex polygons.)
³ The errors in GPC's random polygon test are unhandled exceptions that result in a failure of the clipping operation.
An independent test of multiple polygon clipping libraries can be found here:
http://rogue-modron.blogspot.com/2011/04/polygon-clipping-wrapper-benchmark.html
Code snippets showing how to use the Clipper library to do a polygon intersection ... |
C++
|
Delphi
|
C#
|
http://www.angusj.com/delphi/clipper.php