Exemplo n.º 1
0
        private List <Point2D> DivideBasicEdges()
        {
            List <Point2D> points = new List <Point2D>();

            Edge2D  first      = BasicEdges.First();
            Edge2D  last       = BasicEdges.Last();
            Point2D firstPoint = first.PointInBoth(last);

            points.Add(firstPoint);
            foreach (var currect in BasicEdges)//.Skip(1).Take(BasicEdges.Count - 2))
            {
                //currect.OnDivide();
                points.Add(currect.OnDivide());

                Point2D nextPoint = currect.PointOnlyInThis(last);
                if (nextPoint == firstPoint)
                {
                    break;
                }
                points.Add(nextPoint);

                last = currect;
            }

            return(points);
        }
Exemplo n.º 2
0
        /*Point2D FirstPoint { get { return BasicEdges.First().PointInBoth(BasicEdges.Last()); } }*/

        public List <Point2D> GetActualPointsInWindingOrder()
        {
            List <Point2D> points = new List <Point2D>();

            Edge2D  first      = BasicEdges.First();
            Edge2D  last       = BasicEdges.Last();
            Point2D firstPoint = first.PointInBoth(last);

            points.Add(firstPoint);
            foreach (var currect in BasicEdges)//.Skip(1).Take(BasicEdges.Count - 2))
            {
                currect.AddAllMiddlePoints(points);

                Point2D nextPoint = currect.PointOnlyInThis(last);
                if (nextPoint == firstPoint)
                {
                    break;
                }
                points.Add(nextPoint);

                last = currect;
            }

            return(points);
        }