0

我正在将 Android API Samples 中的Kube应用程序用于我正在开发的应用程序。

该示例在 OpenGL 中创建了一个由 27 个小立方体组成的魔方模型。然后通过旋转立方体的随机层在 animate() 方法中对立方体进行加扰,每次旋转后,在我不完全理解的过程中相应地设置层

 // adjust mPermutation based on the completed layer rotation
             int[] newPermutation = new int[27];
             for (int i = 0; i < 27; i++) {
                newPermutation[i] = mPermutation[mCurrentLayerPermutation[i]];
 //                     newPermutation[i] = mCurrentLayerPermutation[mPermutation[i]];
             }
             mPermutation = newPermutation;
             updateLayers();

该示例工作正常,但由于某种原因,当我将旋转方向更改为 true 时,立方体开始相互重叠,就好像图层没有正确更新一样。
帮助将不胜感激:) 立方体重叠

4

1 回答 1

2

我自己解决了这个问题,所以如果有人感兴趣:
将方向更改为 true 会使立方体向另一个方向旋转,这就像在常规方向上旋转 3 次一样,所以为了正确保存到立方体的新位置,我需要保存新位置三次,如下代码所示:

             if (mAngleIncrement < 0) { // checks the turning direction
             int[] newPermutation = new int[27];
             for (int i = 0; i < 27; i++) {
                newPermutation[i] = mPermutation[mCurrentLayerPermutation[i]];

             }
             mPermutation = newPermutation;
             updateLayers();
         }
         else {
             int[] newPermutation = new int[27];
             for (int i = 0; i < 27; i++) {
                 newPermutation[i] = mPermutation[mCurrentLayerPermutation[i]];
             }
             mPermutation = newPermutation;

             newPermutation = new int[27];
             for (int i = 0; i < 27; i++) {
                 newPermutation[i] = mPermutation[mCurrentLayerPermutation[i]];
             }
             mPermutation = newPermutation;

             newPermutation = new int[27];
             for (int i = 0; i < 27; i++) {
                 newPermutation[i] = mPermutation[mCurrentLayerPermutation[i]];
             }
             mPermutation = newPermutation;
             updateLayers();

         }
于 2012-03-05T13:50:53.887 回答