用于图像像素分析的螺旋环(x,y)C#

用于图像像素分析的螺旋环(x,y)C#,c#,image,search,pixel,spiral,C#,Image,Search,Pixel,Spiral,我正在尝试在坐标(x,y)中进行像素搜索 我需要一个函数(int-width,int-height),它返回一个从中心开始的点数组 如果图像有1000x1000,我需要得到[{500500},{501500},{501501},{500501},{499501},{499500}…] 例如: 嗯,这比我想象的要容易 static IEnumerable<Point> GetPixels(int size) { Point point = new Point(size/2, s

我正在尝试在坐标(x,y)中进行像素搜索

我需要一个函数(int-width,int-height),它返回一个从中心开始的点数组

如果图像有1000x1000,我需要得到[{500500},{501500},{501501},{500501},{499501},{499500}…]

例如:


嗯,这比我想象的要容易

static IEnumerable<Point> GetPixels(int size)
{
    Point point = new Point(size/2, size/2);

    yield return point;
    int sign = 1;
    for (int row = 1; row < size; row++)
    {
        // move right/left by row, and then up/down by row
        for (int k = 0; k < row; k++)
        {
            point.Offset(sign*1, 0);
            yield return point;
        }
        for (int k = 0; k < row; k++)
        {
            point.Offset(0, -sign*1);
            yield return point;
        }
        sign *= -1;
    }
    // last leg to finish filling the area
    for (int k = 0; k < size-1; k++)
    {
        point.Offset(sign*1, 0);
        yield return point;
    }

}
或以图形方式显示
size=50

测试代码非常简单

static void Main(string[] args)
{
    foreach (var point in GetPixels(5))
    {
        Console.WriteLine($"{point}");
    }

    Console.WriteLine();
}

所以,偏移量是x=1,y=1,x=-2,y=-2,x=3,y=3,x=-4,y=-4。。。很确定你可以从那里找到模式。:)非常感谢你,我甚至做到了,但是你的方式比我的好。。谢谢
static void Main(string[] args)
{
    foreach (var point in GetPixels(5))
    {
        Console.WriteLine($"{point}");
    }

    Console.WriteLine();
}