예제 #1
0
        public static void CreateSubdivision(int rows, int cols, int pointCount, out Triangle2DF[] delaunayTriangles, out VoronoiFacet[] voronoiFacets)
        {
            var rand = new Random();
            var pts  = Enumerable.Range(0, pointCount).Select(_ => new PointF(rand.Next(0, cols), rand.Next(0, rows))).ToArray();

            using (Subdiv2D subdivision = new Subdiv2D(pts))
            {
                delaunayTriangles = subdivision.GetDelaunayTriangles();
                voronoiFacets     = subdivision.GetVoronoiFacets();
            }
        }
예제 #2
0
 private void CreateSubdivision(float maxValue, int pointCount, out Triangle2DF[] delaunayTriangles, out VoronoiFacet[] voronoiFacets)
 {
     #region 在0-maxValue 之间创建随机点
     PointF[] pts = new PointF[pointCount];
     Random   r   = new Random((int)(DateTime.Now.Ticks & 0x0000ffff));
     for (int i = 0; i < pts.Length; i++)
     {
         pts[i] = new PointF((float)r.NextDouble() * maxValue, (float)r.NextDouble() * maxValue);
     }
     #endregion
     using (Subdiv2D subDivision = new Subdiv2D(pts))
     {
         delaunayTriangles = subDivision.GetDelaunayTriangles();
         voronoiFacets     = subDivision.GetVoronoiFacets();
     }
 }
예제 #3
0
        /// <summary>
        /// Create planar subdivision for random points
        /// </summary>
        /// <param name="maxValue">The points contains values between [0, maxValue)</param>
        /// <param name="pointCount">The total number of points to create</param>
        public static void CreateSubdivision(float maxValue, int pointCount, out Triangle2DF[] delaunayTriangles, out VoronoiFacet[] voronoiFacets)
        {
            #region create random points in the range of [0, maxValue]
            PointF[] pts = new PointF[pointCount];
            Random   r   = new Random((int)(DateTime.Now.Ticks & 0x0000ffff));
            for (int i = 0; i < pts.Length; i++)
            {
                pts[i] = new PointF((float)r.NextDouble() * maxValue, (float)r.NextDouble() * maxValue);
            }
            #endregion

            using (Subdiv2D subdivision = new Subdiv2D(pts))
            {
                //Obtain the delaunay's triangulation from the set of points;
                delaunayTriangles = subdivision.GetDelaunayTriangles();

                //Obtain the voronoi facets from the set of points
                voronoiFacets = subdivision.GetVoronoiFacets();
            }
        }