所以我有一个float[,]
高度图,作为河流生成算法的一部分,我想选择两个点,只要它们是数组边缘之一的一部分。这似乎是一项简单的任务,但我似乎无法想出一个不涉及太多if语句的解决方案。有没有办法从二维数组的边缘进行选择? (IE,x = 0
或x = max
,或y = 0
或y = max
)
答案 0 :(得分:2)
你可以创建一个包含所有边缘索引的数组,如(0,10)并将它们全部放在一个数组中,现在你只需选择其中一个或多个。
答案 1 :(得分:2)
只是为了新奇,这里有一种方法,它不涉及存储所有索引,或任何if()块:
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];
}