/// <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(); }
/// <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(); * */ }
/// <summary> /// Copy voronoi data. /// </summary> public void SetVoronoi(IVoronoi voro) { SetVoronoi(voro, 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(); * */ }
/// <summary> /// Copy voronoi data. /// </summary> public void SetVoronoi(IVoronoi voro) { Imped_Triangle = true; SetVoronoi(voro, 0); }