---
name: "Math::Polygon::Clip"
section: "3pm"
platform: "linux"
package: "libmath-polygon-perl"
version: "1.11-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Math::Polygon::Clip"
---

# Math::Polygon::Clip(3pm)

frame a polygon in a square

## NAME

Math::Polygon::Clip - frame a polygon in a square

## INHERITANCE

```
 Math::Polygon::Clip
   is an Exporter
```

## SYNOPSIS

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

## DESCRIPTION

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]
  ```

## SEE ALSO

This module is part of Math-Polygon distribution version 1.11, built on May 02, 2025. Website: *http://perl.overmeer.net/CPAN/*

## LICENSE

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/*
