Java 用小数组替换大数组或贴图的一部分

Java 用小数组替换大数组或贴图的一部分,java,Java,我有一个22X12的地图定义为一个网格的颜色。我有七个可能的对象将出现在这个网格上。每个对象都有一个小的颜色数组,范围从4X1到2X2。有没有什么数学或关键字可以让我进一步了解如何将较小的数组放在较大的数组中,覆盖较大的数组值 为了给出一个我想要实现的小例子,我将使用一个更大的整数映射和一个更小的整数数组以及我想要的作为输出 地图: 较小的阵列: 1 0 0 1 将数组放置在以下位置后的贴图: 1 1 1 1 1 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0 0 0 0 1 1

我有一个22X12的地图定义为一个网格的颜色。我有七个可能的对象将出现在这个网格上。每个对象都有一个小的颜色数组,范围从4X1到2X2。有没有什么数学或关键字可以让我进一步了解如何将较小的数组放在较大的数组中,覆盖较大的数组值

为了给出一个我想要实现的小例子,我将使用一个更大的整数映射和一个更小的整数数组以及我想要的作为输出

地图:

较小的阵列:

1 0
0 1
将数组放置在以下位置后的贴图:

1 1 1 1 1 1
1 0 1 0 0 1
1 0 0 1 0 1
1 0 0 0 0 1
1 1 1 1 1 1
我只需要一个地方开始。有没有一个线性代数的概念,我可以查一下,或者有什么方法可以做这类事情?我正在努力确定如何着手做这件事。谢谢。

for(int y=0;yfor (int y = 0; y < small.length; ++y)
  for (int x = 0; x < small[y].length; ++x)
    large[y + replace_y][x + replace_x] = small[y][x];
对于(int x=0;x
公共静态void main(字符串[]args){
int[][]bigMap=新int[][]{
{ 1, 1, 1, 1, 1, 1 },
{ 1, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 1 },
{ 1, 1, 1, 1, 1, 1 }
};
int[][]smallMap=新int[][]{
{ 1, 0 },
{ 0, 1 }
};
覆盖array(bigMap,smallMap,1,1);
//打印出二维数组
对于(int i=0;i
您是如何实现映射的&较小的数组将影响插入的方式,尽管我希望嵌套循环无论如何实现都能完成插入。会这么简单吗?这是最有效的方法吗?将较小的数组放入较大的数组是否有任何限制,因为我只需编辑大网格的值即可将其放入任何位置!除非你用数学方程来表示你的矩阵(如果你想要一个通用的算法,而不仅仅是几个模式,很可能会有很多复杂度),而不是一个值的网格,否则我看不到比在较小数组中循环所有值并将其插入较大数组更快的方法。
for (int y = 0; y < small.length; ++y)
  for (int x = 0; x < small[y].length; ++x)
    large[y + replace_y][x + replace_x] = small[y][x];
public static void main (String[] args) {
    int[][] bigMap = new int[][] {
            { 1, 1, 1, 1, 1, 1 },
            { 1, 0, 0, 0, 0, 1 },
            { 1, 0, 0, 0, 0, 1 },
            { 1, 0, 0, 0, 0, 1 },
            { 1, 1, 1, 1, 1, 1 }
    };

    int[][] smallMap = new int[][] {
            { 1, 0 },
            { 0, 1 }
    };

    overwriteArray(bigMap, smallMap, 1, 1);

    // print out the 2d array
    for (int i = 0; i < bigMap.length; i++) {
        for (int j = 0; j < bigMap[0].length; j++) {
            System.out.print(" " + bigMap[i][j]);
        }
        System.out.println();
    }

}

static void overwriteArray(int[][] big, int[][] small, int x, int y) {
    for (int i = 0; i < small.length; i++) {
        for (int j = 0; j < small[i].length; j++) {
            big[x+i][y+j] = small[i][j];
        }
    }
}