2D Delaunay triangulation on 3D data

Jan 10, 2013 at 4:58 AM

Is there a way without modifying the source to get the 2D Delaunay triangulation of 3D vertices? I want to use the method to find a hull of a lower dimension in the documentation. I know this works best for the type of data and visual I have, the 3D delaunay that I get does not look right as an output.

Developer
Jan 23, 2013 at 8:54 PM

Maybe you want to project your 3D points on some plane first (ie search 3D to 2D projection in goodle) and then compute the convex hull of corresponding 2D points?

Jan 24, 2013 at 2:53 PM

What I ended up doing was using s-hull library atkin c# port because it was a 2D triangulator and I just added a z coordinate to store the extra dimension in the vertex in his code.  This worked for me and didn't actually use this library.  I recommend including an option to output to lower dimensions with your triangulator in the future. 

May 23, 2013 at 4:49 PM
Edited May 27, 2013 at 9:49 AM
I had the same problem and ended up using my own custom class which implements IVertex:
class ProjectedPoint3D : IVertex
{
    public Point3D Point { get; private set; }
    public double[] Position { get; set; }

    public ProjectedPoint3D(Point3D point)
    {
        Point = point;
        Position = new[] { point.X, point.Y };
    }
}
To MIConvexHull it behaves 2D, but after the triangulation you can access the Point property to get 3D information.
(Of course, just storing the z-coordinate would be also sufficient.)