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  Defined in       Default
    inner                    []     
    outer                    undef  

    . inner ARRAY-OF-POLYGONS

    . outer 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

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().

DIAGNOSTICS

Error: Surface requires outer polygon

REFERENCES

See the Math::Polygon website at http://perl.overmeer.net/geo for more details.

COPYRIGHTS

Module version 0.004. Written by Mark Overmeer (polygon@overmeer.net). See the ChangeLog for other contributors.

Copyright (c) 2004 by the author(s). All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.