所以我有一个float[,]
高度图,作为我的河流生成算法的一部分,我想选择两个点,只要它们是数组边缘之一的一部分。这似乎是一项简单的任务,但我似乎想不出一个不涉及太多 if 语句的解决方案。有没有办法从二维数组的边缘进行选择?(即,x = 0
或x = max
,或y = 0
或y = max
)
问问题
801 次
2 回答
2
您可以创建一个包含所有边缘索引(如 (0,10))的数组,并将它们全部放在一个数组中,现在您可以简单地选择其中一个或多个。
于 2012-12-30T19:43:01.710 回答
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];
}
于 2012-12-30T20:19:07.540 回答