hxGeomAlgo icon indicating copy to clipboard operation
hxGeomAlgo copied to clipboard

Small collection of computational geometry algorithms in Haxe.

hxGeomAlgo

Small collection of computational geometry algorithms in Haxe.

swf demo | js demo

Marching Squares (Contour Tracing)

Based on:

  • https://web.archive.org/web/20180316055432/http://devblog.phillipspiess.com/better%20know%20an%20algorithm/2010/02/23/better-know-marching-squares.html (C# - by Phil Spiess)
  • http://www.tomgibara.com/computer-vision/marching-squares (Java - by Tom Gibara)

Ramer-Douglas-Peucker (Polyline Simplification)

Based on:

  • http://karthaus.nl/rdp/ (JS - by Marius Karthaus)
  • http://stackoverflow.com/questions/849211/shortest-distance-between-a-point-and-a-line-segment (JS - by Grumdrig)

Ear Clipping (Triangulation and Poly Decomposition w/ Hole Support)

Based on:

  • https://github.com/mapbox/earcut (JS - by Vladimir Agafonkin)
  • http://www.ewjordan.com/earClip/ (Java - by Eric Jordan)

Bayazit (Poly Decomposition)

Based on:

  • https://web.archive.org/web/20140701210122/http://mnbayazit.com/406/bayazit (C - by Mark Bayazit)
  • http://www.dyn4j.org/ (Java - by William Bittle)

Visibility Polygon and Homogeneous Coords (2D)

Based on:

  • http://www.cs.ubc.ca/~snoeyink/demos/convdecomp/VPDemo.html (Java - by Jack Snoeyink)

Snoeyink-Keil (Minimum Convex Decomposition)

Based on:

Connected Components Labeling and Contour Tracing (w/ Hole Support)

Based on:

Visvalingam-Whyatt (Polyline Simplification)

Based on:

Tess2 (Tesselation to Triangles and Convex Polygons, Poly Boolean Ops)

Based on:

  • GLU Libtess (by Eric Veach, July 1994)
  • tess2.js (JS - by Mikko Mononen, Aug 2013)

IsoContours (Contour Tracing)

Based on:

  • http://en.wikipedia.org/wiki/Marching_squares
  • https://github.com/deltaluca/nape (Haxe - by Luca Deltodesco)
  • https://github.com/scikit-image/scikit-image (Python - by scikit-image team)

Hertel-Mehlhorn (Convex Polygons from Arbitrary Triangulation)

Based on:

  • https://github.com/ivanfratric/polypartition (CPP - by Ivan Fratric)
  • https://web.archive.org/web/20140102033642/http://www.philvaz.com/compgeom/ (by Phil Porvaznik)

Chaikin (Recursive Curve Smoothing)

Based on:

Wu-Yong-Zhang-Zhang (Multi-step Chaikin Curve Smoothing)

Based on:

Dependencies

The only dependency is hxPixels, and only for the algorithms needing access to pixels.

Usage

Code is extensively doc-commented, and I tried my best to make it easy/intuitive to use. You can also take a look at the demo for a quick overview on how to use the different classes.

Credits

hxGeomAlgo is based on the work of many developers and it wouldn't exist if it weren't for them. See the CREDITS file for details.

License

hxGeomAlgo is developed by Giuseppe Di Mauro (azrafe7) and released under the MIT license (except for Tess2.hx, which is licensed under SGI B 2.0). See the LICENSE file for details.