private static StraightnessPlot ConvertToStraightness(CylindricityPlot source) { var result = new StraightnessPlot(); CopyDefaults(source, result); result.Actual.CoordinateSystem = source.Actual.CoordinateSystem; result.Nominal.CoordinateSystem = source.Nominal.CoordinateSystem; var heightFactor = source.Actual.Height; foreach (var segment in source.Segments) { var resultSegment = new Segment <LinePoint, LineGeometry>(segment.Name, segment.SegmentType); result.Segments.Add(resultSegment); foreach (var point in segment.Points) { var resultPoint = new LinePoint(point.Height * heightFactor, point.Deviation); CopyDefaults(point, resultPoint); resultSegment.Points.Add(resultPoint); } } return(result); }
private static StraightnessPlot ConvertCircleToStraightness <TPoint, TGeometry>(Formplot <TPoint, TGeometry> source) where TPoint : CirclePointBase <TPoint, TGeometry>, new() where TGeometry : Geometry, new() { var result = new StraightnessPlot(); CopyDefaults(source, result); result.Actual.CoordinateSystem = source.Actual.CoordinateSystem; result.Nominal.CoordinateSystem = source.Nominal.CoordinateSystem; double? lastAngle = null; const double radToDeg = 180 / Math.PI; foreach (var segment in source.Segments) { var resultSegment = new Segment <LinePoint, LineGeometry>(segment.Name, segment.SegmentType); result.Segments.Add(resultSegment); foreach (var point in segment.Points) { double position; if (!lastAngle.HasValue) { lastAngle = AdjustAngle(point.Angle * radToDeg); position = lastAngle.Value; } else { var angle = AdjustAngle(point.Angle * radToDeg); while (angle < lastAngle) { angle += 360; } lastAngle = angle; position = angle; } var resultPoint = new LinePoint(position, point.Deviation); CopyDefaults(point, resultPoint); resultSegment.Points.Add(resultPoint); } } return(result); }
private static StraightnessPlot ConvertCurveToStraightness <TPoint, TGeometry>(Formplot <TPoint, TGeometry> source) where TPoint : CurvePointBase <TPoint, TGeometry>, new() where TGeometry : Geometry, new() { var result = new StraightnessPlot(); CopyDefaults(source, result); result.Actual.CoordinateSystem = source.Actual.CoordinateSystem; result.Nominal.CoordinateSystem = source.Nominal.CoordinateSystem; Vector?lastPoint = null; var currentLength = 0.0; foreach (var segment in source.Segments) { var resultSegment = new Segment <LinePoint, LineGeometry>(segment.Name, segment.SegmentType); result.Segments.Add(resultSegment); foreach (var point in segment.Points) { if (lastPoint == null) { lastPoint = point.Position; } else { var dx = point.Position.X - lastPoint.Value.X; var dy = point.Position.Y - lastPoint.Value.Y; var dz = point.Position.Z - lastPoint.Value.Z; lastPoint = point.Position; currentLength += Math.Sqrt(dx * dx + dy * dy + dz * dz); } var resultPoint = new LinePoint(currentLength, point.Deviation); CopyDefaults(point, resultPoint); resultSegment.Points.Add(resultPoint); } } return(result); }
private static StraightnessPlot ConvertToStraightness(FlatnessPlot source) { var result = new StraightnessPlot(); CopyDefaults(source, result); result.Actual.CoordinateSystem = source.Actual.CoordinateSystem; result.Nominal.CoordinateSystem = source.Nominal.CoordinateSystem; Vector?lastPoint = null; var currentLength = 0.0; foreach (var segment in source.Segments) { var resultSegment = new Segment <LinePoint, LineGeometry>(segment.Name, segment.SegmentType); result.Segments.Add(resultSegment); foreach (var point in segment.Points) { if (lastPoint == null) { lastPoint = new Vector(point.Coordinate1, point.Coordinate2); } else { var dx = point.Coordinate1 - lastPoint.Value.X; var dy = point.Coordinate2 - lastPoint.Value.Y; lastPoint = new Vector(point.Coordinate1, point.Coordinate2); currentLength += Math.Sqrt(dx * dx + dy * dy); } var resultPoint = new LinePoint(currentLength, point.Deviation); CopyDefaults(point, resultPoint); resultSegment.Points.Add(resultPoint); } } return(result); }