Beispiel #1
0
        public List <Point> HullPointsInOrder()
        {
            List <Edge> hullEdges = HullEdges();

            List <Point> points = new List <Point>();

            if (hullEdges.Count < 1)
            {
                return(points);
            }

            EdgeReorderer re = new EdgeReorderer(hullEdges, "s");

            hullEdges = re.GetEdges();
            List <LR> orientations = re.GetEdgeOrientations();

            re.Dispose();

            LR orient;

            int n = hullEdges.Count;

            for (int i = 0; i < n; i++)
            {
                Edge e = hullEdges[i];
                orient = orientations[i];
                points.Add(e.Site(orient).coord);
            }

            return(points);
        }
Beispiel #2
0
        Site RightRegion(HalfEdge hE, Site lowestSite)
        {
            Edge e = hE.e;

            if (e == null)
            {
                return(lowestSite);
            }
            return(e.Site(LR.Other(hE.lr)));
        }
Beispiel #3
0
        Site LeftRegion(HalfEdge hE, Site lowestSite)
        {
            Edge e = hE.e;

            if (e == null)
            {
                return(lowestSite);
            }
            return(e.Site(hE.lr));
        }