internal override IEnumerable <Point2Dmm[]> LoadPoints(string path) { Message("Image processing, please wait."); var interpolator = new ImageInterpolator(path); var points = interpolator.InterpolatePointsIsolated(); HideMessage(); return(points); }
/// <inheritdoc/> internal override ShapeItem Load(string path, ReadableIdentifier identifier) { Message("Image processing, please wait."); var interpolator = new ImageInterpolator(path); var points = interpolator.InterpolatePoints(); points = ShapeFactory.Centered(points); HideMessage(); var shape = new ShapeItem2D(identifier, points); shape.MetricWidth = 50; return(shape); }
/// <summary> /// Interpolates coordinates from given image. /// </summary> public static IEnumerable <Point2Dmm> InterpolateImage(string filename) { var interpolator = new ImageInterpolator(filename); return(interpolator.InterpolatePoints()); }
private void refreshOfffsetLines() { _currentOffsetLines = scaledOnlyDefinitionTransformation(_shapeDefinition); /*/ var offsetClusters = new List<Point2Dmm[]>(); * var remainingClusters = new HashSet<Point2Dmm[]>(_currentOffsetLines); * foreach (var cluster in remainingClusters.ToArray()) * { * var offsetCalculator = new OffsetCalculator(cluster.Reverse()); * var offsetPoints = offsetCalculator.WithOffset(-1.0); * if (offsetPoints.Any()) * { * offsetClusters.AddRange(offsetPoints); * } * else * { * remainingClusters.Remove(cluster); * } * } * * _currentOffsetLines = offsetClusters.OrderByDescending(c => c.Select(p => p.C2).Min()).ToArray();/**/ /**/ var itemPoints = scaledOnlyDefinitionTransformation(_shapeDefinition); itemPoints = OffsetCalculator.Join(itemPoints); var offsetClusters = new List <Point2Dmm[]>(); var remainingClusters = new HashSet <Point2Dmm[]>(itemPoints); var toolWidth = 6.0; for (var i = 0; i < 1; ++i) { if (remainingClusters.Count == 0) { break; } foreach (var cluster in remainingClusters.ToArray()) { var offsetCalculator = new OffsetCalculator(cluster); var offsetPoints = offsetCalculator.WithOffset(toolWidth / 2 * (i + 1)); if (offsetPoints.Any()) { offsetClusters.AddRange(offsetPoints); } else { remainingClusters.Remove(cluster); } } } _currentOffsetLines = offsetClusters.ToArray(); //_currentOffsetLines = itemPoints.ToArray(); //_currentOffsetLines = offsetClusters.OrderByDescending(c => c.Select(p => p.C2).Min()).ToArray(); /*/ * var itemPoints = scaledOnlyDefinitionTransformation(_shapeDefinition); * var calculator = new StrokeOffsetCalculator(itemPoints); * //var offsetClusters = calculator.WithOffset(0.7); * var offsetClusters = ImageInterpolator.FlattenStokes(itemPoints); * offsetClusters = itemPoints; * _currentOffsetLines = offsetClusters.OrderByDescending(c => c.Select(p => p.C2).Min()).ToArray();/**/ }