示例#1
0
        internal override IEnumerable <Point2Dmm[]> LoadPoints(string path)
        {
            Message("Image processing, please wait.");
            var interpolator = new ImageInterpolator(path);
            var points       = interpolator.InterpolatePointsIsolated();

            HideMessage();

            return(points);
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <summary>
        /// Interpolates coordinates from given image.
        /// </summary>
        public static IEnumerable <Point2Dmm> InterpolateImage(string filename)
        {
            var interpolator = new ImageInterpolator(filename);

            return(interpolator.InterpolatePoints());
        }
示例#4
0
        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();/**/
        }