  | 
 
 
 
 |  
 |  | 
 
  
    | Math::Polygon::Clip(3) | 
    User Contributed Perl Documentation | 
    Math::Polygon::Clip(3) | 
   
 
Math::Polygon::Clip - frame a polygon in a square 
 Math::Polygon::Clip
   is an 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(\@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]
    
   
 
This module is part of Math-Polygon distribution version 1.11,
    built on May 02, 2025. Website: http://perl.overmeer.net/CPAN/ 
Copyrights 2004-2025 by [Mark Overmeer <markov@cpan.org>].
    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/ 
 
 
  Visit the GSP FreeBSD Man Page Interface. Output converted with ManDoc.
  |