Пример #1
0
        private List <Point> ConstructMidpoints(Point end1, Point end2, int level)
        {
            List <Point> middlePoints = new List <Point>();

            // Recursive Base Case
            if (level == NUM_MID_SEGMENT_POINTS)
            {
                return(middlePoints);
            }

            Point midpoint = PointFactory.GeneratePoint(end1.Midpoint(end2));

            //
            // Recursively construct all points between
            //
            middlePoints.AddRange(ConstructMidpoints(end1, midpoint, level + 1));

            middlePoints.Add(midpoint);

            // Add to the list of midpoints clauses (for instantiation during figure synthesis).
            midpoints.Add(new Midpoint(new InMiddle(midpoint, new Segment(end1, end2))));

            middlePoints.AddRange(ConstructMidpoints(midpoint, end2, level + 1));

            return(middlePoints);
        }