如何仅在2d数组的边缘选择点

时间:2012-12-30 19:35:30

标签: c# arrays multidimensional-array xna

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

2 个答案:

答案 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];
    }