2012-10-30 57 views
0

对于图像过滤器我想生成一个可变邻域。 这是我的邻居现在的样子,这是一个摩尔社区。动态邻域坐标

private Point[] neighborhood = new Point[] 
               { 
                new Point(-1,-1), 
                new Point(0,-1), 
                new Point(1,-1), 

                new Point(-1,0), 
                new Point(1,0), 

                new Point(-1,1), 
                new Point(0,1), 
                new Point(1,1), 
               }; 

当我想改变邻域的大小时,这会变得相当复杂。 我想要一个返回所有坐标的函数,就像generateNeighborhood(8)将返回这个Points数组一样。什么是最好的方法来做到这一点?

回答

1

是这样的吗?

private Point[] GetNeighbors(int count) 
{ 
    int a, x, y, c = count/2; 
    Point[] p = new Point[count * count]; 

    for (a = y = 0; y < count; y++) 
     for (x = 0; x < count; x++) 
      p[a++] = /* Create point here */ 
    return p; 
} 

我想你可以添加代码一角;)

+0

为什么你使用:整数A,X,Y,C =计数/ 2 ;? – Goot

+0

变量** c **表示中心坐标,因此您可以计算当前坐标和去中心之间的差值(delta);) – Jigsore

+0

我稍后在需要坐标时执行此操作。用于:(a = y = 0的; Y <计数; Y ++) { 为(X = 0; X <计数; X ++)(!(X == 0 &&ÿ== 0)) { 如果 { p [a ++] = new Point(x,y); p [a ++] = new Point(-1 * x,-1 * y); } } } return p; }很好用:)谢谢 – Goot