如何只在二维数组的边缘选择点

本文关键字:边缘 选择 二维数组 | 更新日期: 2023-09-27 17:50:14

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

如何只在二维数组的边缘选择点

你可以用像(0,10)这样的所有边索引创建一个数组,然后把它们放在一个数组中,现在你可以简单地选择其中一个或多个

为新颖起见,这里有一种不涉及存储所有索引或任何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];
    }