旋转3D网格Lua

时间:2018-06-23 12:22:30

标签: 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

如果这两个方向都可行,那就太好了,所以我不必重复三遍就可以将其向左旋转。

1 个答案:

答案 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运算符。