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¶
- $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.
-Option--Default
inner []
outer undef
- inner => ARRAY-OF-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 $box are 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¶
- Error: surface requires outer polygon
SEE ALSO¶
This module is part of Math-Polygon distribution version 1.03, built on January
21, 2014. Website:
http://perl.overmeer.net/geo/
LICENSE¶
Copyrights 2004,2006-2014 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