Math::Polygon::Surface(3pm)

Math::Polygon::Surface3pm

Polygon with exclusions

Usage

 my $outer   = Math::Polygon->new( [1,2], [2,4], [5,7], [1,2] );
 my $surface = Math::Polygon::Surface->new($outer);

Overview

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 merge %options with @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 $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

Releases

8 releases since Debian 6.0 (Squeeze); the text changed 6 times.

  1. 6.0
  2. 7
  3. 8
  4. 9
  5. 10–11
  6. 12
  7. 13

License

Copyrights 2004-2025 by [Mark Overmeer <[email protected]>]. 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://dev.perl.org/licenses/

From libmath-polygon-perl 1.11-1 in Debian 13 (Trixie). Parsed by carta from the page's man source.