NAME
Math::Polygon::Surface - Polygon with exclusions
SYNOPSIS
my $outer   = Math::Polygon->new( [1,2], [2,4], [5,7], [1,2] );
my $surface = Math::Polygon::Surface->new($outer);DESCRIPTION
A surface is one polygon which represents the outer bounds of an array, plus optionally a list of polygons which represent exclusions from that outer polygon.
METHODS
Constructors
- $any->new( [%options], [@polygons], %options )
- 
You may merge %optionswith@polygons. You may also use the "outer" and "inner" options.Each polygon is a references to an ARRAY of points, each an ARRAY of X and Y, but better pass Math::Polygon objects. -Option--Default inner [] outer undef- inner => \@polygons
- 
The inner @polygons, zero or more Math::Polygon objects.
- outer => $polygon
- 
The outer $polygon, a Math::Polygon.
 
Attributes
- $obj->inner()
- 
Returns a list (often empty) of inner polygons. 
- $obj->outer()
- 
Returns the outer polygon. 
Simple calculations
- area()
- 
Returns the area enclosed by the outer polygon, minus the areas of the inner polygons. See method Math::Polygon::area(). 
- $obj->bbox()
- 
Returns a list with four elements: (xmin, ymin, xmax, ymax), which describe the bounding box of the surface, which is the bbox of the outer polygon. See method Math::Polygon::bbox(). 
- $obj->perimeter()
- 
The length of the border: sums outer and inner perimeters. See method Math::Polygon::perimeter(). 
Clipping
- $obj->fillClip1($box)
- 
Clipping a polygon into rectangles can be done in various ways. With this algorithm, the parts of the polygon which are outside the $boxare mapped on the borders.All polygons are treated separately. 
- $obj->lineClip($box)
- 
Returned is a list of ARRAYS-OF-POINTS containing line pieces from the input surface. Lines from outer and inner polygons are undistinguishable. See method Math::Polygon::lineClip(). 
- $obj->string()
- 
Translate the surface structure into some string. Use Geo::WKT if you need a standardized format. Returned is a single string possibly containing multiple lines. The first line is the outer, the other lines represent the inner polygons. 
DIAGNOSTICS
SEE ALSO
This module is part of Math-Polygon version 2.00, built on September 04, 2025. Website: http://perl.overmeer.net/CPAN/
LICENSE
For contributors see file ChangeLog.
This software is copyright (c) 2004-2025 by Mark Overmeer.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.