POLYGON_PROPERTIES 
 Compute Properties of an Arbitrary Polygon
    
    
    
      POLYGON_PROPERTIES
      is a Python 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;
        
 
        - 
          perimeter integral;
        
 
        - 
          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:
    
    
      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:
    
    
      
      POLYGON_INTEGRALS,
      a Python library which
      returns the exact value of the integral of any monomial
      over the interior of a polygon in 2D.
    
    
      
      POLYGON_MONTE_CARLO,
      a Python 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 Python library which
      triangulates a possibly nonconvex polygon,
      and which can use gnuplot to display the external edges and 
      internal diagonals of the triangulation.
    
    
      
      TOMS112,
      a Python library which
      determines whether a point is contained in a polygon,
      by Moshe Shimrat.
      This is a version of ACM TOMS algorithm 112.
    
    
      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 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:
    
    
      
    
    
      Examples and Tests:
    
    
      
    
    
      You can go up one level to 
      the Python source codes.
    
    
    
      Last revised on 18 October 2015.