0

我有一个像这样的 3 维数组(我有对象而不是 0):

var array:Array =
  [
    [
      [0,0],[0,0],[0,0]
    ],
    [
      [0,0],[0,0],[0,0]
    ],
    [
      [0,0],[0,0],[0,0]
    ],
    [
      [0,0],[0,0],[0,0]
    ]
  ];

每个数组位置都包含一个放置在 3D 空间中的对象,要定位它,您只需要:array[zPos][yPos][xPos]。

是否有允许我在 Z、Y 和/或 X 轴上将阵列旋转 90 度的库或函数?

注意:记住数组可能是不规则的。

编辑:

我不认为我已经说清楚了。我不想在 3D 空间中移动对象,我只想知道它们在那里。我想要做什么来操作数组。

我找到了解决问题的部分方法,但我相信可以对其进行优化。我开发了一个公式来按 Z 轴旋转多个数组。这是代码:

var arr1:Array = 
[
    [
        [  0,   1,   2,   3],
        [010, 011, 012, 013]
    ],
    [
        [100, 101, 102, 103],
        [110, 111, 112, 113]
    ],
    [
        [200, 201, 202, 203],
        [210, 211, 212, 213]
    ]
];
var arr2:Array = new Array;

for (var i:int = 0; i < arr1.length; i++) 
{
    arr2.push(new Array);
    for (var j:int = 0; j < arr1[i][0].length; j++) 
    {
        arr2[i].push(new Array);
        for (var k:int = 0; k < arr1[i].length; k++) 
        {
            arr2[i][j].push(0);
        }
    }
}

for (i = 0; i < arr1.length; i++) 
{
    for (j = 0; j < arr1[i].length; j++) 
    {
        for (k = 0; k < arr1[i][j].length; k++) 
        {
            arr2[i][k][arr1[i].length - j - 1] = arr1[i][j][k];
        }
    }
}

您是否知道通过 Y 轴或 X 轴旋转多个数组的其他库公式?非常感谢,对不起我的英语

4

1 回答 1

0

我相信你需要重新考虑你的设计。将对象放在这样的数组中并尝试旋转它们将是一个明确的性能杀手。

对于多维数组旋转、整数或数字,正确的方法是使用旋转矩阵。您会在许多流行的 actionscript 引擎(如 alternativa3d、away3d 等)中找到类似 3D 操作的函数。

于 2012-05-24T06:50:16.513 回答