【问题标题】:Rotate 3D Grid Lua旋转 3D 网格 Lua
【发布时间】:2018-06-23 12:22:29
【问题描述】:

嗨!

我想知道如何将 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

如果这在两个方向上都有效,那就太好了,这样我就不必再重复三遍就可以将它向左旋转。

【问题讨论】:

标签: lua rotation transform


【解决方案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 运算符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 2015-06-24
    • 2021-01-20
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多