Math::Polygon::Clip(3pm)

Math::Polygon::Clip3pm

Frame a polygon in a square

Usage

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

Inheritance

 Math::Polygon::Clip
   is an Exporter

Overview

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

Functions

polygon_fill_clip1(\@box, @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(\@box, @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( \@box, $out-$poly, [$in-$polys] )

To be implemented. A surrounding polygon, with possible inclussions.

polygon_line_clip(\@box, @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]

Releases

8 releases since Debian 6.0 (Squeeze); the text changed 6 times.

  1. 6.0
  2. 7
  3. 8
  4. 9
  5. 10–11
  6. 12
  7. 13

License

Copyrights 2004-2025 by [Mark Overmeer <[email protected]>]. 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://dev.perl.org/licenses/

From libmath-polygon-perl 1.11-1 in Debian 13 (Trixie). Parsed by carta from the page's man source.