Need help or advice ? Come to the Icy club ! - Every Wenesday morning from 9h30 to 12h30 - Francois Jacob Building - Main hall - Pasteur
Register

User reviews

This plugin is not rated yet


Please log-in to post a review

QuickHull

by Alexandre Dufour

QuickHull library for Icy. Computes convex envelopes of random point sets in 2D or 3D.

Publication Id
ICY-J5R4V9
See technical details
View complete changelog

Documentation

The QuickHull library for Icy implements 2D and 3D algorithns to calculate convex envelopes from a given (random) set of points.

The 2D version of the algorithm is detailed here (see "alternative method"): https://en.wikipedia.org/wiki/Quickhull

The 3D version of the algorithm is detailed here: https://www.cs.ubc.ca/~lloyd/java/quickhull3d.html

The easiest way to use the library from within Icy is via the Convexify ROI plug-in

The low-level API can be accessed as follows:

  • In 2D:
      List<Point2D> points = ...
// replace the list by its envelope
points = QuickHull2D.computeConvexEnvelope(points);
// Conveniently, a region of interest is easy to create
ROI2DPolygon polygon = new ROI2DPolygon(points);
  • In 3D:
     Point3d[] points = ...
QuickHull3D qhull3d = new QuickHull3D();
// build the envelope (nothing is returned)
qhull3d.build(points, points.length);
// The envelope is built as a mesh (faces and vertices), accessible via:
Point3d[] hullVertices = qhull3d.getVertices();
int[][] faces = qhull3d.getVertices();
// However, conveniently, a ROI can easily be obtained from the QuickHull3D object using
ROI3DPolygonalMesh mesh = new ROI3DPolygonalMesh(qhull3d);