# 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;
• integral over polygon of 1, x, x^2, xy, y, y^2;
• is polygon convex?;
• lattice area;
• perimeter;
• point to polygon distance;
• point to nearest point on polygon;
• sampling uniformly;
• triangulation (decomposition into N-3 triangles).

### 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 M-dimensional 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:

1. Gerard Bashein, Paul Detmer,
Centroid of a Polygon,
in Graphics Gems IV,
edited by Paul Heckbert,
AP Professional, 1994,
ISBN: 0123361559,
LC: T385.G6974.
2. SF Bockman,
Generalizing the Formula for Areas of Polygons to Moments,
American Mathematical Society Monthly,
Volume 96, Number 2, February 1989, pages 131-132.
A Programmer's Geometry,
Butterworths, 1983,
ISBN: 0408012420.
4. 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.
5. Moshe Shimrat,
Algorithm 112: Position of Point Relative to Polygon,
Communications of the ACM,
Volume 5, Number 8, August 1962, page 434.
6. 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.

### 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_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_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 Gauss-Jordan 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.