public List <Vector2f> HullPointsInOrder() { List <Edge> hullEdges = HullEdges(); List <Vector2f> points = new List <Vector2f>(); if (hullEdges.Count == 0) { return(points); } EdgeReorderer reorderer = new EdgeReorderer(hullEdges, typeof(Site)); hullEdges = reorderer.Edges; List <LR> orientations = reorderer.EdgeOrientations; reorderer.Dispose(); LR orientation; for (int i = 0; i < hullEdges.Count; i++) { Edge edge = hullEdges[i]; orientation = orientations[i]; points.Add(edge.Site(orientation).Coord); } return(points); }
private void ReorderEdges() { EdgeReorderer reorderer = new EdgeReorderer(edges, typeof(Vertex)); edges = reorderer.Edges; edgeOrientations = reorderer.EdgeOrientations; reorderer.Dispose(); }
public IEnumerator AllocTest() { Profiler.BeginSample("Initing"); Random.InitState(10); var points = VoronoiTest.CreateRandomPoints(50); Voronoi voronoi = VoronoiTest.TestVoronoi(points); List <Edge> edges = voronoi.sites[0].Edges; List <bool> edgeOrientations = new List <bool>(edges.Count); Profiler.EndSample(); //var reorderedEdges = er.Edges; List <Edge> originalEdges = new List <Edge>(); originalEdges.AddRange(edges); yield return(null); Profiler.BeginSample("EdgeReorderer create"); EdgeReorderer.CreateInstance(); Profiler.EndSample(); yield return(null); Profiler.BeginSample("First EdgeReorderer reorder"); EdgeReorderer.Reorder(ref edges, ref edgeOrientations, typeof(Vertex)); Profiler.EndSample(); yield return(null); Profiler.BeginSample("NoGC EdgeReorderer reorder"); EdgeReorderer.Reorder(ref edges, ref edgeOrientations, typeof(Vertex)); Profiler.EndSample(); yield return(null); edges = new List <Edge>(); edges.AddRange(originalEdges); Profiler.BeginSample("NoGC EdgeReorder another reorder"); EdgeReorderer.Reorder(ref edges, ref edgeOrientations, typeof(Vertex)); Profiler.EndSample(); yield return(null); Assert.Greater(originalEdges.Count, 0); Assert.IsNotNull(edges); Assert.IsNotNull(originalEdges); Assert.AreEqual(edges.Count, originalEdges.Count); yield return(null); }
public static List <Vector2> EdgesToPolygon(this List <Edge> edges) { var result = new List <Vector2>(); var edgeReorderer = new EdgeReorderer(edges, typeof(Vertex)); for (var j = 0; j < edgeReorderer.Edges.Count; j++) { var edge = edgeReorderer.Edges[j]; if (!edge.Visible()) { continue; } result.Add(edge.ClippedEnds[edgeReorderer.EdgeOrientations[j]].ToUnityVector2()); } return(result); }
public static List <Vector2[]> EdgesToSortedLines(this List <Edge> edges) { var result = new List <Vector2[]>(); var edgeReorderer = new EdgeReorderer(edges, typeof(Vertex)); for (var j = 0; j < edgeReorderer.Edges.Count; j++) { var edge = edgeReorderer.Edges[j]; if (!edge.Visible()) { continue; } var p0 = edge.ClippedEnds[edgeReorderer.EdgeOrientations[j]].ToUnityVector2(); var p1 = edge.ClippedEnds[edgeReorderer.EdgeOrientations[j] == LR.LEFT ? LR.RIGHT : LR.LEFT].ToUnityVector2(); result.Add(new[] { p0, p1 }); } return(result); }
public List<Vector2> hullPointsInOrder() { List<Edge> hullEdges = hullEdges(); List<Vector2> points = new List<Vector2>(); if (hullEdges.Count == 0) { return points; } EdgeReorderer reorderer = new EdgeReorderer(hullEdges, Site); hullEdges = reorderer.edges; List<LR> orientations = reorderer.edgeOrientations; reorderer.dispose(); LR orientation; int n = hullEdges.Count; for (int i = 0; i < n; ++i) { Edge edge = hullEdges[i]; orientation = orientations[i]; points.Add(edge.site(orientation).coord); } return points; }
private void reorderEdges() { EdgeReorderer reorderer=new EdgeReorderer(_edges,typeof(Vertex)); _edges=reorderer.edges; _edgeOrientations=reorderer.edgeOrientations; reorderer.dispose(); }
public IEnumerator CapacitiesInspect() { Debug.LogWarning(EdgeReorderer.GetCapacities()); yield return(null); }