Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
旋转三维栅格Lua_Lua_Rotation_Transform - Fatal编程技术网

旋转三维栅格Lua

旋转三维栅格Lua,lua,rotation,transform,Lua,Rotation,Transform,你好 我想知道如何将3D网格旋转90度,或者更确切地说,将2D网格一次旋转一层 第1层示例: X O X X X X X O X X X X X X X X X O X O O O X O O ==90° Right==> X X X X X X X X X X X X O X X X X X X X X X O X X 如果这在两个方向都起作用,那就太好了,所以我不必

你好

我想知道如何将3D网格旋转90度,或者更确切地说,将2D网格一次旋转一层

第1层示例:

X O X X X                X X O X X
X X X X X                X X O X O
O O X O O ==90° Right==> X X X X X
X X X X X                X X O X X
X X X X X                X X O X X

如果这在两个方向都起作用,那就太好了,所以我不必再重复三次就可以向左旋转了。

不要重新构造数据-这可能会非常昂贵,特别是如果网格大小非常大的话。相反,使用不同的迭代逻辑遍历网格。例如:

使用上述数据,按左图所示保存:

rows = {}
rows[1] = {“X”, “O”, “X”, “X”, “X”}
rows[2] = {“X”, “X”, “X”, “X”, “X”}
rows[3] = {“O”, “O”, “X”, “O”, “O”}
rows[4] = {“X”, “X”, “X”, “X”, “X”}
rows[5] = {“X”, “X”, “X”, “X”, “X”}
迭代方法1是:

for i = 1, #rows do
    for j = 1, #rows[i] do
        — Do something with rows[i][j]
    end
end
for i = 1, #rows[1] do
    for j = #rows, 1, -1 do
        — Do something with rows[j][i]
    end
end
这将像左边的网格一样读取数据:从上到下跨行读取

迭代方法2为:

for i = 1, #rows do
    for j = 1, #rows[i] do
        — Do something with rows[i][j]
    end
end
for i = 1, #rows[1] do
    for j = #rows, 1, -1 do
        — Do something with rows[j][i]
    end
end
这将读取左侧的数据,就像它是右侧的网格一样

现在,您实际上需要重新排列数据(例如,因为它将被写入图像文件),然后使用上面的嵌套循环遍历网格,并在每次迭代中写出单元格值

另外:如果网格的大小始终为5x5,则可以简化上述代码。您可以将循环硬编码为从1到5,而不是使用#length操作符。

实现2D矩阵旋转