5

所以我有一个float[,]高度图,作为我的河流生成算法的一部分,我想选择两个点,只要它们是数组边缘之一的一部分。这似乎是一项简单的任务,但我似乎想不出一个不涉及太多 if 语句的解决方案。有没有办法从二维数组的边缘进行选择?(即,x = 0x = max,或y = 0y = max

4

2 回答 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 回答