internal static ConvexHull <TVertex, TFace> GetConvexHull <TVertex, TFace>(IList <TVertex> data, ConvexHullComputationConfig config) where TVertex : IVertex where TFace : ConvexFace <TVertex, TFace>, new() { config ??= new ConvexHullComputationConfig(); IVertex[] vertices = new IVertex[data.Count]; for (int i = 0; i < data.Count; i++) { vertices[i] = data[i]; } ConvexHullInternal internal2 = new ConvexHullInternal(vertices, false, config); internal2.FindConvexHull(); return(new ConvexHull <TVertex, TFace> { Points = internal2.GetHullVertices <TVertex>(data), Faces = internal2.GetConvexFaces <TVertex, TFace>() }); }
/// <summary> /// This is called by the "ConvexHull" class. /// </summary> /// <typeparam name="TVertex"></typeparam> /// <typeparam name="TFace"></typeparam> /// <param name="data"></param> /// <param name="config">If null, default ConvexHullComputationConfig.GetDefault() is used.</param> /// <returns></returns> internal static ConvexHull <TVertex, TFace> GetConvexHull <TVertex, TFace>(IList <TVertex> data, ConvexHullComputationConfig config) where TFace : ConvexFace <TVertex, TFace>, new() where TVertex : IVertex { config = config ?? new ConvexHullComputationConfig(); var vertices = new IVertex[data.Count]; for (int i = 0; i < data.Count; i++) { vertices[i] = data[i]; } ConvexHullInternal ch = new ConvexHullInternal(vertices, false, config); ch.FindConvexHull(); var hull = ch.GetHullVertices(data); return(new ConvexHull <TVertex, TFace> { Points = hull, Faces = ch.GetConvexFaces <TVertex, TFace>() }); }