Beispiel #1
0
        public Point [] ToPolygonOld(RegionVO region)
        {
            var points = this._regionManipulator.Get_RegionEdgePeaks(region);


            List <Point> result = new List <Point>();

            for (int i = 0; i < points.Length; i++)
            {
                result.Add(_regionManipulator.Get_PointFromIndex(points[i]));
            }

            return(result.ToArray());
        }
Beispiel #2
0
        public List <int> GetInOrderEdgePixels(int pStartPixel)
        {
            List <int> result = new List <int>();

            int       startPixel           = pStartPixel;
            Direction startEdgeOrientation = Direction.Top;

            int           currentPixel        = startPixel;
            Direction     currEdgeOrientation = startEdgeOrientation;
            StringBuilder sb = new StringBuilder();

            do
            {
                result.Add(currentPixel);

                if (HasPixelAtDirection(currentPixel, currEdgeOrientation))
                {
                    Direction counterClockDirection = GetCounterClockChangeDirection(currEdgeOrientation);
                    currentPixel        = GetPixelAtDirection(currentPixel, currEdgeOrientation);
                    currEdgeOrientation = counterClockDirection;
                }
                else
                {
                    Direction clockwiseDirection = GetClockwiseChangeDirection(currEdgeOrientation);

                    if (HasPixelAtDirection(currentPixel, clockwiseDirection))
                    {
                        currentPixel = GetPixelAtDirection(currentPixel, clockwiseDirection);
                    }
                    else
                    {
                        currEdgeOrientation = clockwiseDirection;
                    }
                }
                Point tmp = _regionManipulator.Get_PointFromIndex(currentPixel);
                sb.Append($"{currentPixel} - {tmp.X} {tmp.Y}  {currEdgeOrientation} \n");

                if (result.Count > this._pixels.Count * 4)
                {
                    List <Point> tmpp = this._pixels.Select(x => _regionManipulator.Get_PointFromIndex(x)).ToList();

                    System.Diagnostics.Trace.WriteLine(sb.ToString());
                    System.Diagnostics.Trace.WriteLine(tmpp.Count);
                    throw new NotSupportedException();
                }
            } while (currentPixel != startPixel || currEdgeOrientation != startEdgeOrientation);


            return(result);
        }