2012-10-30 55 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