Scroll to navigation

Math::Polygon::Surface(3pm) User Contributed Perl Documentation Math::Polygon::Surface(3pm)

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

$any->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
    
The inner @polygons, zero or more Math::Polygon objects.
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

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

Cast by new()

SEE ALSO

This module is part of Math-Polygon version 2.00, built on September 04, 2025. Website: http://perl.overmeer.net/CPAN/

LICENSE

For contributors see file ChangeLog.

This software is copyright (c) 2004-2025 by Mark Overmeer.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

2025-10-04 perl v5.40.1