Exemplo n.º 1
0
        /// <summary>
        /// Copy voronoi data.
        /// </summary>
        public void SetVoronoi(IVoronoi voro, int infCount)
        {
            Imped_Triangle = true;
            int i, n = voro.Points.Length;

            // Copy points
            this.VoronoiPoints = new float[2 * n + infCount];
            foreach (var v in voro.Points)
            {
                if (v == null)
                {
                    continue;
                }

                i = v.ID;
                this.VoronoiPoints[2 * i]     = (float)v.X;
                this.VoronoiPoints[2 * i + 1] = (float)v.Y;
            }

            // Copy edges
            Point first, last;
            var   edges = new List <uint>(voro.Regions.Count * 4);

            foreach (var region in voro.Regions)
            {
                first = null;
                last  = null;

                foreach (var pt in region.Vertices)
                {
                    if (first == null)
                    {
                        first = pt;
                        last  = pt;
                    }
                    else
                    {
                        edges.Add((uint)last.ID);
                        edges.Add((uint)pt.ID);

                        last = pt;
                    }
                }

                if (region.Bounded && first != null)
                {
                    edges.Add((uint)last.ID);
                    edges.Add((uint)first.ID);
                }
            }
            this.VoronoiEdges = edges.ToArray();
        }
Exemplo n.º 2
0
        /// <summary>
        /// Copy voronoi data.
        /// </summary>
        public void SetVoronoi(IVoronoi voro, int infCount)
        {
            int i, n = voro.Points.Length;

            // Copy points
            this.VoronoiPoints = new float[2 * n + infCount];
            foreach (var v in voro.Points)
            {
                if (v == null)
                {
                    continue;
                }

                i = v.ID;
                this.VoronoiPoints[2 * i] = (float)v.X;
                this.VoronoiPoints[2 * i + 1] = (float)v.Y;
            }

            // Copy edges
            Point first, last;
            var edges = new List<uint>(voro.Regions.Count * 4);
            foreach (var region in voro.Regions)
            {
                first = null;
                last = null;

                foreach (var pt in region.Vertices)
                {
                    if (first == null)
                    {
                        first = pt;
                        last = pt;
                    }
                    else
                    {
                        edges.Add((uint)last.ID);
                        edges.Add((uint)pt.ID);

                        last = pt;
                    }
                }

                if (region.Bounded && first != null)
                {
                    edges.Add((uint)last.ID);
                    edges.Add((uint)first.ID);
                }
            }
            this.VoronoiEdges = edges.ToArray();

            /*
            int i, n = voro.VertexList.Count;

            // Copy points
            this.VoronoiPoints = new float[2 * n + infCount];
            foreach (var v in voro.VertexList)
            {
                i = v.Id;
                this.VoronoiPoints[2 * i] = (float)v.X;
                this.VoronoiPoints[2 * i + 1] = (float)v.Y;
            }

            // Copy edges
            var edges = new List<uint>(voro.HalfEdgeList.Count);
            foreach (var edge in voro.Edges)
            {
                if (edge.P0 >= 0 && edge.P1 >= 0)
                {
                    edges.Add((uint)edge.P0);
                    edges.Add((uint)edge.P1);
                }
            }
            this.VoronoiEdges = edges.ToArray();
             * */
        }
Exemplo n.º 3
0
 /// <summary>
 /// Copy voronoi data.
 /// </summary>
 public void SetVoronoi(IVoronoi voro)
 {
     SetVoronoi(voro, 0);
 }
Exemplo n.º 4
0
        /// <summary>
        /// Copy voronoi data.
        /// </summary>
        public void SetVoronoi(IVoronoi voro, int infCount)
        {
            int i, n = voro.Points.Length;

            // Copy points
            this.VoronoiPoints = new float[2 * n + infCount];
            foreach (var v in voro.Points)
            {
                if (v == null)
                {
                    continue;
                }

                i = v.ID;
                this.VoronoiPoints[2 * i]     = (float)v.X;
                this.VoronoiPoints[2 * i + 1] = (float)v.Y;
            }

            // Copy edges
            Point first, last;
            var   edges = new List <uint>(voro.Regions.Count * 4);

            foreach (var region in voro.Regions)
            {
                first = null;
                last  = null;

                foreach (var pt in region.Vertices)
                {
                    if (first == null)
                    {
                        first = pt;
                        last  = pt;
                    }
                    else
                    {
                        edges.Add((uint)last.ID);
                        edges.Add((uint)pt.ID);

                        last = pt;
                    }
                }

                if (region.Bounded && first != null)
                {
                    edges.Add((uint)last.ID);
                    edges.Add((uint)first.ID);
                }
            }
            this.VoronoiEdges = edges.ToArray();

            /*
             * int i, n = voro.VertexList.Count;
             *
             * // Copy points
             * this.VoronoiPoints = new float[2 * n + infCount];
             * foreach (var v in voro.VertexList)
             * {
             *  i = v.Id;
             *  this.VoronoiPoints[2 * i] = (float)v.X;
             *  this.VoronoiPoints[2 * i + 1] = (float)v.Y;
             * }
             *
             * // Copy edges
             * var edges = new List<uint>(voro.HalfEdgeList.Count);
             * foreach (var edge in voro.Edges)
             * {
             *  if (edge.P0 >= 0 && edge.P1 >= 0)
             *  {
             *      edges.Add((uint)edge.P0);
             *      edges.Add((uint)edge.P1);
             *  }
             * }
             * this.VoronoiEdges = edges.ToArray();
             * */
        }
Exemplo n.º 5
0
 /// <summary>
 /// Copy voronoi data.
 /// </summary>
 public void SetVoronoi(IVoronoi voro)
 {
     SetVoronoi(voro, 0);
 }
Exemplo n.º 6
0
 /// <summary>
 /// Copy voronoi data.
 /// </summary>
 public void SetVoronoi(IVoronoi voro)
 {
     Imped_Triangle = true;
     SetVoronoi(voro, 0);
 }