Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #4
0
    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);
    }
Exemple #5
0
    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;
    }
Exemple #7
0
 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);
        }