POLYGON_PROPERTIES
Compute Properties of an Arbitrary Polygon
POLYGON_PROPERTIES
is a C library which
computes properties of an arbitrary polygon in the plane, defined
by a sequence of vertices, including

angles;

area;

centroid;

containment of a point;

diameter;

expand polygon outward by H;

inradius of regular polygon to area, outradius side length;

integral over polygon of 1, x, x^2, xy, y, y^2;

is polygon convex?;

lattice area;

outradius of regular polygon to area, inradius, side length;

perimeter;

point to polygon distance;

point to nearest point on polygon;

sampling uniformly;

side length of regular polygon to area, inradius, outradius;

triangulation (decomposition into N3 triangles).
Licensing:
The computer code and data files made available on this
web page are distributed under
the GNU LGPL license.
Languages:
POLYGON_PROPERTIES is available in
a C version and
a C++ version and
a FORTRAN90 version and
a MATLAB version and
a Python version.
Related Data and Programs:
GEOMETRY,
a C library which
performs geometric calculations in 2, 3 and N dimensional space.
HYPERSPHERE_PROPERTIES,
a C library which
carries out various operations for an Mdimensional hypersphere, including
converting between Cartesian and spherical coordinates,
stereographic projection, sampling the surface of the sphere, and
computing the surface area and volume.
POLYGON_INTEGRALS,
a C library which
returns the exact value of the integral of any monomial
over the interior of a polygon in 2D.
POLYGON_MONTE_CARLO,
a C library which
applies a Monte Carlo method to estimate the integral of a function
over the interior of a polygon in 2D.
POLYGON_TRIANGULATE,
a C library which
triangulates a possibly nonconvex polygon,
and which can use gnuplot to display the external edges and
internal diagonals of the triangulation.
TETRAHEDRON_PROPERTIES,
a C program which
computes properties of a tetrahedron in 3D, including the centroid,
circumsphere, dihedral angles, edge lengths, face angles, face areas,
insphere, quality, solid angles, and volume.
TRIANGLE_PROPERTIES,
a C program which
computes properties of a triangle whose vertex coordinates
are read from a file.
Reference:

Gerard Bashein, Paul Detmer,
Centroid of a Polygon,
in Graphics Gems IV,
edited by Paul Heckbert,
AP Professional, 1994,
ISBN: 0123361559,
LC: T385.G6974.

SF Bockman,
Generalizing the Formula for Areas of Polygons to Moments,
American Mathematical Society Monthly,
Volume 96, Number 2, February 1989, pages 131132.

Adrian Bowyer, John Woodwark,
A Programmer's Geometry,
Butterworths, 1983,
ISBN: 0408012420.

Peter Schorn, Frederick Fisher,
Testing the Convexity of a Polygon,
in Graphics Gems IV,
edited by Paul Heckbert,
AP Professional, 1994,
ISBN: 0123361559,
LC: T385.G6974.

Moshe Shimrat,
Algorithm 112:
Position of Point Relative to Polygon,
Communications of the ACM,
Volume 5, Number 8, August 1962, page 434.

Allen VanGelder,
Efficient Computation of Polygon Area and Polyhedron Volume,
in Graphics Gems V,
edited by Alan Paeth,
AP Professional, 1995,
ISBN: 0125434553,
LC: T385.G6975.
Source Code:
Examples and Tests:
List of Routines:

ANGLE_HALF finds half an angle.

ANGLE_RAD returns the angle in radians swept out between two rays.

I4_MODP returns the nonnegative remainder of I4 division.

I4_WRAP forces an I4 to lie between given limits by wrapping.

POLYGON_ANGLES computes the interior angles of a polygon.

POLYGON_AREA computes the area of a polygon.

POLYGON_AREA_2 computes the area of a polygon.

POLYGON_CENTROID computes the centroid of a polygon.

POLYGON_CENTROID_2 computes the centroid of a polygon.

POLYGON_CONTAINS_POINT finds if a point is inside a simple polygon.

POLYGON_CONTAINS_POINT_2: is a point inside a convex polygon.

POLYGON_DIAMETER computes the diameter of a polygon.

POLYGON_EXPAND expands a polygon.

POLYGON_INRAD_DATA determines polygonal data from its inner radius.

POLYGON_INTEGRAL_1 integrates the function 1 over a polygon.

POLYGON_INTEGRAL_X integrates the function X over a polygon.

POLYGON_INTEGRAL_XX integrates the function X*X over a polygon.

POLYGON_INTEGRAL_XY integrates the function X*Y over a polygon.

POLYGON_INTEGRAL_Y integrates the function Y over a polygon.

POLYGON_INTEGRAL_YY integrates the function Y*Y over a polygon.

POLYGON_IS_CONVEX determines whether a polygon is convex.

POLYGON_LATTICE_AREA computes the area of a lattice polygon.

POLYGON_OUTRAD_DATA determines polygonal data from its outer radius.

POLYGON_POINT_DIST: distance ( polygon, point ).

POLYGON_POINT_NEAR computes the nearest point on a polygon.

POLYGON_SIDE_DATA determines polygonal data from its side length.

R8_DEGREES converts an angle from radian to degree measure.

R8MAT_SOLVE uses GaussJordan elimination to solve an N by N linear system.

R8MAT_TRANSPOSE_PRINT prints an R8MAT, transposed.

R8MAT_TRANSPOSE_PRINT_SOME prints some of an R8MAT, transposed.

R8VEC_PRINT prints an R8VEC.

SEGMENT_POINT_DIST: distance ( line segment, point ).

SEGMENT_POINT_NEAR: nearest point on line segment to point.

TIMESTAMP prints the current YMDHMS date as a time stamp.

TRIANGLE_AREA computes the area of a triangle.

TRIANGLE_BARYCENTRIC finds the barycentric coordinates of a point.

TRIANGLE_CONTAINS_POINT_1 finds if a point is inside a triangle.
You can go up one level to
the C source codes.
Last revised on 09 May 2014.