旋转三维栅格Lua
你好强> 我想知道如何将3D网格旋转90度,或者更确切地说,将2D网格一次旋转一层 第1层示例:旋转三维栅格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 如果这在两个方向都起作用,那就太好了,所以我不必
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矩阵旋转