嗨!
我想知道如何将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
如果这两个方向都可行,那就太好了,所以我不必重复三遍就可以将其向左旋转。
答案 0 :(得分:1)
不要重组您的数据-这可能会非常昂贵,尤其是在网格很大的情况下。而是,使用不同的迭代逻辑遍历网格。例如:
使用上面的数据,如左图所示保留它:
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
这将像左侧的网格一样读取数据:从上到下在行中
迭代方法2为:
for i = 1, #rows[1] do
for j = #rows, 1, -1 do
— Do something with rows[j][i]
end
end
这将读取左侧中的数据,就像是右侧的网格中的一样。
现在,您实际上需要重新排列数据(例如,由于将其写到图像文件中),然后使用上述嵌套循环遍历网格并在每次迭代中写出单元格值。
也:如果您的网格始终为5x5,则可以简化上面的代码。您可以将循环硬编码为1到5,而不必使用#length运算符。