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 空間に配置されたオブジェクトが含まれており、その位置を特定するには、配列 [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

設計を再考する必要があると思います。オブジェクトをそのような配列に入れて回転させようとすると、明らかにパフォーマンスが低下します。

多次元配列の回転、整数または数値の場合、適切な方法は回転行列を使用することです。このような 3D 操作用の関数は、alternativa3d、away3d などの多くの一般的なアクション スクリプト エンジンで見つけることができます。

于 2012-05-24T06:50:16.513 に答える