/// <summary> /// Creates a convex hull of the input data. /// </summary> /// <typeparam name="TVertex">The type of the t vertex.</typeparam> /// <typeparam name="TFace">The type of the t face.</typeparam> /// <param name="data">The data.</param> /// <param name="PlaneDistanceTolerance">The plane distance tolerance (default is 1e-10). If too high, points /// will be missed. If too low, the algorithm may break. Only adjust if you notice problems.</param> /// <returns> /// ConvexHull<TVertex, TFace>. /// </returns> public static ConvexHull <TVertex, TFace> Create <TVertex, TFace>(IList <TVertex> data, float PlaneDistanceTolerance = Constants.DefaultPlaneDistanceTolerance) where TVertex : IVertex where TFace : ConvexFace <TVertex, TFace>, new() { return(ConvexHull <TVertex, TFace> .Create(data, PlaneDistanceTolerance)); }
static void TestMICHull() { var vs = someVertex3s(); Debug.Log("input v count: " + vs.Count); var chull = ConvexHull.Create <Vertex3, MConvexFace <Vertex3> >(vs); //createMesh(chull); Debug.Log("chull v count: " + chull.Points.ToList().Count); int faceCount = 0; int faceIndex = 0; foreach (var face in chull.Faces) { faceCount += face.Vertices.Length; drawFace(face, faceIndex++); } Debug.Log("face count " + faceCount); Vector3 offset = Vector3.right * 5f; var points = chull.Points.ToList(); for (int i = 1; i < points.Count; ++i) { Debug.DrawLine(points[i - 1].Vec3 + offset, points[i].Vec3 + offset, Color.blue); } }
private void Start() { var vs = someVertex3s(); var chull = ConvexHull.Create <Vertex3, MConvexFace <Vertex3> >(vs); createMesh(chull); }
/// <summary> /// Creates a convex hull of the input data. /// </summary> /// <typeparam name="TVertex">The type of the t vertex.</typeparam> /// <typeparam name="TFace">The type of the t face.</typeparam> /// <param name="data">The data.</param> /// <param name="tolerance">The plane distance tolerance (default is 1e-10). If too high, points /// will be missed. If too low, the algorithm may break. Only adjust if you notice problems.</param> /// <returns> /// ConvexHull<TVertex, TFace>. /// </returns> public static ConvexHullCreationResult<TVertex, TFace> Create<TVertex, TFace>(IList<TVertex> data, double tolerance = Constants.DefaultPlaneDistanceTolerance) where TVertex : IVertex where TFace : ConvexFace<TVertex, TFace>, new() { return ConvexHull<TVertex, TFace>.Create(data, tolerance); }
/// <summary> /// Creates a convex hull of the input data. /// </summary> /// <param name="data">The data.</param> /// <param name="tolerance">The plane distance tolerance (default is 1e-10). If too high, points /// will be missed. If too low, the algorithm may break. Only adjust if you notice problems.</param> /// <returns> /// ConvexHull<DefaultVertex, DefaultConvexFace<DefaultVertex>>. /// </returns> public static ConvexHullCreationResult<DefaultVertex, DefaultConvexFace<DefaultVertex>> Create(IList<double[]> data, double tolerance = Constants.DefaultPlaneDistanceTolerance) { var points = data.Select(p => new DefaultVertex { Position = p }) .ToList(); return ConvexHull<DefaultVertex, DefaultConvexFace<DefaultVertex>>.Create(points, tolerance); }
/// <summary> /// Creates a convex hull of the input data. /// </summary> /// <typeparam name="TVertex">The type of the t vertex.</typeparam> /// <param name="data">The data.</param> /// <param name="PlaneDistanceTolerance">The plane distance tolerance (default is 1e-10). If too high, points /// will be missed. If too low, the algorithm may break. Only adjust if you notice problems.</param> /// <returns> /// ConvexHull<TVertex, DefaultConvexFace<TVertex>>. /// </returns> public static ConvexHullCreationResult <TVertex, DefaultConvexFace <TVertex> > Create <TVertex>(IList <TVertex> data, double PlaneDistanceTolerance = Constants.DefaultPlaneDistanceTolerance) where TVertex : IVertex { return(ConvexHull <TVertex, DefaultConvexFace <TVertex> > .Create(data, PlaneDistanceTolerance)); }
/// <summary> /// Creates a convex hull of the input data. /// </summary> /// <param name="data"></param> /// <returns></returns> public static ConvexHull <DefaultVertex, DefaultConvexFace <DefaultVertex> > Create(IEnumerable <double[]> data) { var points = data.Select(p => new DefaultVertex { Position = p.ToArray() }); return(ConvexHull <DefaultVertex, DefaultConvexFace <DefaultVertex> > .Create(points)); }
/// public static ConvexHull <DefaultVertex, DefaultConvexFace <DefaultVertex> > Create(IList <double[]> data, ConvexHullComputationConfig config) { var points = data.Select(p => new DefaultVertex { Position = p.ToArray() }).ToList(); return(ConvexHull <DefaultVertex, DefaultConvexFace <DefaultVertex> > .Create(points, config)); }
/// <summary> /// Creates a convex hull of the input data. /// </summary> /// <param name="data">The data.</param> /// <param name="PlaneDistanceTolerance">The plane distance tolerance (default is 1e-10). If too high, points /// will be missed. If too low, the algorithm may break. Only adjust if you notice problems.</param> /// <returns> /// ConvexHull<DefaultVertex, DefaultConvexFace<DefaultVertex>>. /// </returns> public static ConvexHull <DefaultVertex, DefaultConvexFace <DefaultVertex> > Create(IList <float[]> data, float PlaneDistanceTolerance = Constants.DefaultPlaneDistanceTolerance) { var points = data.Select(p => new DefaultVertex { Position = p }).ToList(); return(ConvexHull <DefaultVertex, DefaultConvexFace <DefaultVertex> > .Create(points, PlaneDistanceTolerance)); }
public static ConvexHull <DefaultVertex, DefaultConvexFace <DefaultVertex> > Create(IList <double[]> data, double PlaneDistanceTolerance = 1E-10) { List <DefaultVertex> data2 = (from p in data select new DefaultVertex { Position = p }).ToList(); return(ConvexHull <DefaultVertex, DefaultConvexFace <DefaultVertex> > .Create(data2, PlaneDistanceTolerance)); }
/// <summary> /// Creates a convex hull of the input data. /// </summary> /// <param name="data"></param> /// <returns></returns> public static ConvexHull <DefaultVertex, DefaultConvexFace <DefaultVertex> > Create(IEnumerable <float[]> data) { //EDGAR TODO List <DefaultVertex> points = new List <DefaultVertex>(); foreach (float[] d in data) { points.Add(new DefaultVertex(d)); } //var points = data.Select(p => new DefaultVertex { items = p.ToArray() }); return(ConvexHull <DefaultVertex, DefaultConvexFace <DefaultVertex> > .Create(points)); }
/// <summary> /// Creates a convex hull of the input data. /// </summary> /// <typeparam name="TVertex"></typeparam> /// <typeparam name="TFace"></typeparam> /// <param name="data"></param> /// <param name="config">If null, default ConvexHullComputationConfig is used.</param> /// <returns></returns> public static ConvexHull <TVertex, TFace> Create <TVertex, TFace>(IList <TVertex> data) where TVertex : IVertex where TFace : ConvexFace <TVertex, TFace>, new() { return(ConvexHull <TVertex, TFace> .Create(data, null)); }
/// <summary> /// Creates a convex hull of the input data. /// </summary> /// <typeparam name="TVertex"></typeparam> /// <typeparam name="TFace"></typeparam> /// <param name="data"></param> /// <returns></returns> public static ConvexHull <TVertex, TFace> Create <TVertex, TFace>(IEnumerable <TVertex> data) where TVertex : IVector where TFace : ConvexFace <TVertex, TFace>, new() { return(ConvexHull <TVertex, TFace> .Create(data)); }
/// <summary> /// Creates a convex hull of the input data. /// </summary> /// <typeparam name="TVertex"></typeparam> /// <param name="data"></param> /// <returns></returns> public static ConvexHull <TVertex, DefaultConvexFace <TVertex> > Create <TVertex>(IEnumerable <TVertex> data) where TVertex : IVector { return(ConvexHull <TVertex, DefaultConvexFace <TVertex> > .Create(data)); }
/// <summary> /// Creates the 2D convex hull of the input data. /// </summary> /// <typeparam name="TVertex">The type of the t vertex.</typeparam> /// <param name="data">The data.</param> /// <param name="tolerance">The tolerance.</param> /// <returns>List<TVertex>.</returns> public static ConvexHullCreationResult<TVertex> Create2D<TVertex>(IList<TVertex> data, double tolerance = Constants.DefaultPlaneDistanceTolerance) where TVertex : IVertex2D, new() { return ConvexHull<TVertex>.Create(data, tolerance); }
/// <summary> /// Creates a convex hull of the input data. /// </summary> /// <typeparam name="TVertex"></typeparam> /// <param name="data"></param> /// <param name="config">If null, default ConvexHullComputationConfig is used.</param> /// <returns></returns> /// public static ConvexHull <TVertex, DefaultConvexFace <TVertex> > Create <TVertex>(IList <TVertex> data) where TVertex : IVertex { return(ConvexHull <TVertex, DefaultConvexFace <TVertex> > .Create(data, null)); }
/// public static ConvexHull <TVertex, DefaultConvexFace <TVertex> > Create <TVertex>(IList <TVertex> data, ConvexHullComputationConfig config) where TVertex : IVertex { return(ConvexHull <TVertex, DefaultConvexFace <TVertex> > .Create(data, config)); }
public static ConvexHull <TVertex, TFace> Create <TVertex, TFace>(IList <TVertex> data, double PlaneDistanceTolerance = 1E-10) where TVertex : IVertex where TFace : ConvexFace <TVertex, TFace>, new() { return(ConvexHull <TVertex, TFace> .Create(data, PlaneDistanceTolerance)); }
/// public static ConvexHull <TVertex, TFace> Create <TVertex, TFace>(IList <TVertex> data, ConvexHullComputationConfig config) where TVertex : IVertex where TFace : ConvexFace <TVertex, TFace>, new() { return(ConvexHull <TVertex, TFace> .Create(data, config)); }