Mark Overmeer >
Math-Polygon >
Math::Polygon::Clip

Module Version: 1.03
Math::Polygon::Clip - frame a polygon in a square

Math::Polygon::Clip is a Exporter

my @poly = ( [1,2], [2,4], [5,7], [1, 2] ); my @box = ( $xmin, $ymin, $xmax, $ymax ); my $boxed = polygon_clip \@box, @poly;

Cut-off all parts of the polygon which are outside the box

**polygon_fill_clip1**(ARRAY-$box, LIST-of-$points)-
Clipping a polygon into rectangles can be done in various ways. With this algorithm (which I designed myself, but may not be new), the parts of the polygon which are outside the $box are mapped on the borders. The polygon stays in one piece.

Returned is one list of points, which is cleaned from double points, spikes and superfluous intermediate points.

**polygon_fill_clip2**(ARRAY-$box, LIST-of-$points)-
**To be implemented**. The polygon falls apart in fragments, which are not connected: paths which are followed in two directions are removed. This is required by some applications, like polygons used in geographical context (country contours and such). **polygon_fill_clip3**(ARRAY-$box, $out-$poly, [$in-$polys])-
**To be implemented**. A surrounding polygon, with possible inclussions. **polygon_line_clip**(ARRAY-$box, LIST-of-$points)-
Returned is a list of ARRAYS (possibly 0 long) containing line pieces from the input polygon (or line).

example:

my @points = ( [1,2], [2,3], [2,0], [1,-1], [1,2] ); my @bbox = ( 0, -2, 2, 2 ); my @l = polygon_line_clip \@bbox, @points; print scalar @l; # 1, only one piece found my @first = @{$l[0]}; # first is [2,0], [1,-1], [1,2]

This module is part of Math-Polygon distribution version 1.03, built on January 21, 2014. Website: *http://perl.overmeer.net/geo/*

Copyrights 2004,2006-2014 by [Mark Overmeer]. For other contributors see ChangeLog.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See *http://www.perl.com/perl/misc/Artistic.html*

syntax highlighting: