POLYGON_PROPERTIES\
Compute Properties of an Arbitrary Polygon {#polygon_properties-compute-properties-of-an-arbitrary-polygon align=”center”}
==========================================
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 N-3 triangles).
Licensing: {#licensing align=”center”}
The computer code and data files made available on this web page are
distributed under the GNU LGPL license.
Languages: {#languages align=”center”}
POLYGON_PROPERTIES is available in a C
version and a
C++ version
and a FORTRAN77
version and
a FORTRAN90
version and a
MATLAB version
and a Python
version.
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 given tetrahedron.
TRIANGLE_PROPERTIES,
a C++ program which computes properties of a triangle whose vertex
coordinates are read from a file.
Reference: {#reference align=”center”}
- 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 131-132.
- 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: {#source-code align=”center”}
Examples and Tests: {#examples-and-tests align=”center”}
List of Routines: {#list-of-routines align=”center”}
- ANGLE_HALF finds half an angle.
- ANGLE_RAD returns the angle in radians swept out between two
rays.
- BETWEEN is TRUE if vertex C is between vertices A and B.
- COLLINEAR returns a measure of collinearity for three points.
- DIAGONAL: VERTEX(IM1) to VERTEX(IP1) is a proper internal
diagonal.
- DIAGONALIE is true if VERTEX(IM1):VERTEX(IP1) is a proper
diagonal.
- I4_MODP returns the nonnegative remainder of I4 division.
- I4_WRAP forces an I4 to lie between given limits by wrapping.
- IN_CONE is TRUE if the diagonal VERTEX(IM1):VERTEX(IP1) is
strictly internal.
- INTERSECT is true if lines VA:VB and VC:VD intersect.
- INTERSECT_PROP is TRUE if lines VA:VB and VC:VD have a proper
intersection.
- L4_XOR returns the exclusive OR of two L4’s.
- 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 finds if a point is 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_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 in
2D.
- 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_SAMPLE uniformly samples a polygon.
- POLYGON_SIDE_DATA determines polygonal data from its side
length.
- POLYGON_TRIANGULATE determines a triangulation of a polygon.
- R8_DEGREES converts an angle from radian to degree measure.
- R8_HUGE returns a “huge” R8.
- R8_MAX returns the maximum of two R8’s.
- R8_MIN returns the minimum of two R8’s.
- R8_UNIFORM_01 returns a unit pseudorandom R8.
- 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_NORM returns the L2 norm of an R8VEC.
- R8VEC_PRINT prints an R8VEC.
- R8VEC_SUM returns the sum of an R8VEC.
- R8VEC_UNIFORM_01_NEW returns a new unit pseudorandom R8VEC.
- SEGMENT_POINT_DIST: distance ( line segment, point ).
- SEGMENT_POINT_NEAR finds the point on a line segment nearest a
point.
- TIMESTAMP prints the current YMDHMS date as a time stamp.
- TRIANGLE_AREA computes the signed 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 14 October 2015.