Beispiel #1
0
        Component.Model SimplifyModel(Component.IModel model)
        {
            Component.Model  simplified = new Component.Model();
            Primitive.Figure figure     = new Primitive.Figure();
            Splitter         splitter   = new Splitter();

            var figures = model.GetData();

            foreach (var f in figures)
            {
                var contours     = f.GetContours();
                var lines        = splitter.Split(contours, double.Parse(textBox_Splitter_Accuracy.Text, CultureInfo.InvariantCulture));
                var new_segments = new List <ISegment>();
                foreach (var line in lines)
                {
                    new_segments.Add(JoinMSPoints.PointsToSegment(line.GetPoint1().GetPoint(),
                                                                  line.GetPoint2().GetPoint()));
                }
                var contour = new Primitive.Contour();
                foreach (var new_s in new_segments)
                {
                    contour.Add(new_s);
                }
                figure.Add(contour);
            }
            simplified.Add(figure);
            return(simplified);
        }
Beispiel #2
0
        private IFigure ConvertShapeToFigure(Shape2D shape)
        {
            Figure result = new Figure();

            foreach (var contour in shape.Contour)
            {
                Primitive.Contour  convertContour = new Primitive.Contour();
                List <ParserPoint> points         = new List <ParserPoint>();

                for (int i = 0; i < contour.Segments.Count() - 1; i++)
                {
                    points.Add(contour.JointsOfSegments[i]);

                    foreach (var point in contour.Segments[i])
                    {
                        points.Add(point);
                    }

                    points.Add(contour.JointsOfSegments[i + 1]);

                    convertContour.Add(new Segment(new BezierCurve(), ConvertPoints(points)));
                    points.Clear();
                }

                points.Add(contour.JointsOfSegments.Last());

                foreach (var point in contour.Segments.Last())
                {
                    points.Add(point);
                }

                points.Add(contour.JointsOfSegments.First());

                convertContour.Add(new Segment(new BezierCurve(), ConvertPoints(points)));
                result.Add(convertContour);
            }
            return(result);
        }
Beispiel #3
0
        public SplitterTest()
        {
            contours = new List <IContour>();
            Primitive.Contour contour1 = new Primitive.Contour();
            Primitive.Contour contour2 = new Primitive.Contour();

            List <ISegment> segments1 = new List <ISegment>
            {
                new Segment(new BezierCurve(), new List <Point>
                {
                    new Point(-2, -2),
                    new Point(-2, 2)
                }),
                new Segment(new BezierCurve(), new List <Point>
                {
                    new Point(-2, 2),
                    new Point(2, 2)
                }),
                new Segment(new BezierCurve(), new List <Point>
                {
                    new Point(2, 2),
                    new Point(2, -2)
                }),
                new Segment(new BezierCurve(), new List <Point>
                {
                    new Point(2, -2),
                    new Point(-2, -2)
                })
            };

            List <ISegment> segments2 = new List <ISegment>
            {
                new Segment(new BezierCurve(), new List <Point>
                {
                    new Point(0, 0),
                    new Point(1, 0)
                }),
                new Segment(new BezierCurve(), new List <Point>
                {
                    new Point(1, 0),
                    new Point(0, 1)
                }),
                new Segment(new BezierCurve(), new List <Point>
                {
                    new Point(0, 1),
                    new Point(0, 0)
                })
            };

            foreach (var segment in segments1)
            {
                contour1.Add(segment);
            }
            foreach (var segment in segments2)
            {
                contour2.Add(segment);
            }
            contours.Add(contour1);
            contours.Add(contour2);

            splitter      = new Splitter();
            numOfSegments = 0;
            foreach (var contour in contours)
            {
                numOfSegments += contour.GetSegments().Count();
            }
        }