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); }
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); }
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(); } }