Exemple #1
0
 /// <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&lt;TVertex, TFace&gt;.
 /// </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));
 }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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&lt;TVertex, TFace&gt;.
 /// </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&lt;DefaultVertex, DefaultConvexFace&lt;DefaultVertex&gt;&gt;.
 /// </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&lt;TVertex, DefaultConvexFace&lt;TVertex&gt;&gt;.
 /// </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));
 }
Exemple #7
0
        /// <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));
        }
Exemple #8
0
        ///
        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));
        }
Exemple #9
0
        /// <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&lt;DefaultVertex, DefaultConvexFace&lt;DefaultVertex&gt;&gt;.
        /// </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));
        }
Exemple #10
0
        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));
        }
Exemple #11
0
        /// <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));
        }
Exemple #12
0
        /// <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));
        }
Exemple #13
0
 /// <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));
 }
Exemple #14
0
 /// <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&lt;TVertex&gt;.</returns>
 public static ConvexHullCreationResult<TVertex> Create2D<TVertex>(IList<TVertex> data, double tolerance = Constants.DefaultPlaneDistanceTolerance)
     where TVertex : IVertex2D, new()
 {
     return ConvexHull<TVertex>.Create(data, tolerance);
 }
Exemple #16
0
 /// <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));
 }
Exemple #17
0
 ///
 public static ConvexHull <TVertex, DefaultConvexFace <TVertex> > Create <TVertex>(IList <TVertex> data, ConvexHullComputationConfig config)
     where TVertex : IVertex
 {
     return(ConvexHull <TVertex, DefaultConvexFace <TVertex> > .Create(data, config));
 }
Exemple #18
0
 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));
 }
Exemple #19
0
 ///
 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));
 }