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
 $obj>new([%options], [$polygons], %options)
 Math::Polygon::Surface>new([%options], [$polygons], %options)

You may add %options after and/or before the $polygons. You may also use
the ``outer'' and ``inner'' options. $polygons are references to ARRAYs of points,
each an ARRAY of X and Y, but better instantiated Math::Polygon objects.
OptionDefault inner [] outer undef

 inner => ARRAYOFPOLYGONS
 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 $box are mapped on the borders.
All polygons are treated separately.
 $obj>lineClip($box)
 Returned is a list of ARRAYSOFPOINTS 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
 Error: surface requires outer polygon
LICENSE
Copyrights 2004,20062014 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