Mark Overmeer > Math-Polygon-1.02 > Math::Polygon::Surface

Math-Polygon-1.02.tar.gz

Dependencies

Annotate this POD

# CPAN RT

 Open 5
View/Report Bugs
Module Version: 1.02   Source   Latest Release: Math-Polygon-1.06

# 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