2012-12-30 17 views
5

Yani bir float[,] heightmap'im var ve nehir oluşturma algoritmamın bir parçası olarak, dizinin kenarlarından birinin parçası olduğu sürece iki nokta seçmek istiyorum. Bu basit bir görev gibi görünse de, ifadeler çok fazla içermeyen bir çözüm bulmak gibi görünmüyor. 2d dizinin kenarlarından seçim yapmak için bir yolu var mı? Sen (0,10) gibi tüm kenar-indicies bir dizi yapmak ve bir dizide hepsini koyabilirsinizYalnızca 2d dizisinin kenarlarında Nokta Seçimi

+0

rastgele bir noktaya ister misin? – JasonD

+2

Kaç tane yol çok mu? –

+0

Kenarlardan birinde olduğu sürece rastgele bir nokta. DÜZENLEME: İlgili ise iki nokta seçeceğim. – user1938413

cevap

2

(IE, x = 0 veya x = max veya y = 0 veya y = max), artık sadece birini veya daha fazlasını seçebilirsiniz onlar.

+0

Soruyla ilgili olmayan bir şey: Rastgele aralığı dizi uzunluğunun N katına uzatırsanız ve aralıkta bir nokta almak için modulo kullanırsanız, rastgele daha iyi sonuçlar arşivlersiniz. Normalde 7'yi multipikatör olarak kullanırım. –

2

Sadece yenilik, burada tüm indisleri saklamak içermeyen bunu yapmanın bir yolu, ya varsa() blokları:

static void randPoint(int width, int height, out int x, out int y, Random r) 
    { 
     int[] dim = {width,height}; 
     int[] res = new int[2]; 

     res[0] = r.Next(0, 2) * (width - 1); 
     res[1] = r.Next(0, 2) * (height - 1); 
     int hv = r.Next(0, 2); 
     res[hv] = r.Next(0,dim[hv]); 

     x = res[0]; 
     y = res[1]; 
    } 
İlgili konular