Project

General

Profile

« Previous | Next » 

Revision 59d4ca91

Added by Leszek Koltunski about 1 year ago

Diamond Skewb solver should be fully working now.

View differences:

src/main/java/org/distorted/objectlib/main/TwistyObjectCubit.java
252 252
    Static4D q = QuatHelper.quatMultiply(quat,mParent.mObjectQuats[mQuatIndex]);
253 253
    mQuatIndex = normalizeScrambleQuat(q);
254 254
    computeRotationRow();
255

  
256
 //   if( mCubitIndex==5 )
257
 //     android.util.Log.e("D", "index="+mCubitIndex+" quat: "+mQuatIndex);
258

  
255 259
    return mQuatIndex;
256 260
    }
257 261

  
src/main/java/org/distorted/objectlib/tablebases/TablebasesSkewbDiamond.java
30 30
          { {4,7,11}, {3,6, 9}, {5,8,10}, {0,1, 2} }
31 31
      };
32 32

  
33
  private static final int[][][] CORNER =
33
  public static final int[][][] CORNER_QUATS =
34 34
      {
35
          { {0,9},{2,4},{10,11},{6,8},{1,5},{3,7} },
36
          { {1,3},{0,11},{5,7},{9,10},{2,8},{4,6} },
37
          { {10,11},{6,8},{0,9},{2,4},{3,7},{1,5} },
38
          { {5,7},{9,10},{1,3},{0,11},{4,6},{2,8} },
39
          { {2,6},{1,7},{4,8},{3,5},{0,10},{9,11} },
40
          { {4,8},{3,5},{2,6},{1,7},{9,11},{0,10} }
35
          { {0,9},{2,4},{10,11},{8,6},{1,5},{3,7} },   // order of each pair determines the twist.
36
          { {1,3},{0,11},{5,7},{10,9},{2,8},{6,4} },
37
          { {10,11},{6,8},{0,9},{4,2},{7,3},{5,1} },
38
          { {7,5},{10,9},{3,1},{0,11},{6,4},{2,8} },
39
          { {2,6},{1,7},{8,4},{5,3},{0,10},{9,11} },
40
          { {4,8},{5,3},{6,2},{1,7},{9,11},{0,10} }
41 41
      };
42 42

  
43 43
///////////////////////////////////////////////////////////////////////////////////////////////////
......
161 161

  
162 162
  private int computeCornerQuat(int originalLocation, int newLocation, int twist)
163 163
    {
164
    return CORNER[originalLocation][newLocation][twist];
164
    return CORNER_QUATS[originalLocation][newLocation][twist];
165 165
    }
166 166

  
167 167
///////////////////////////////////////////////////////////////////////////////////////////////////
......
173 173
    for(int i=0; i<6; i++)
174 174
      {
175 175
      int q = quats[i];
176
      int[][] perm = CORNER[i];
176
      int[][] perm = CORNER_QUATS[i];
177 177

  
178 178
      for(int j=0; j<6; j++)
179 179
        {
......
196 196
    int totalTwist = (index%32);
197 197
    int corners_perm_num = (index/32);
198 198

  
199
int origT = totalTwist;
200

  
201 199
    int[] centers_perm = new int[4];
202 200
    TablebaseHelpers.getEvenPermutationFromNum(centers_perm,centers_perm_num);
203 201
    int[] corners_perm = new int[6];
......
212 210
      quats[i] = computeCornerQuat(i,corners_perm[i],twist);
213 211
      }
214 212

  
215
//android.util.Log.e("D", "quats: centers_num="+centers_perm_num+" twist="+origT+" corners_num="+corners_perm_num);
216
//android.util.Log.e("D", "quats: centers_perm: "+corners_perm[0]+" "+corners_perm[1]+" "+corners_perm[2]+" "+corners_perm[3]+" "+corners_perm[4]+" "+corners_perm[5]);
217

  
218 213
    quats[ 6] = computeCenterQuat(0,centers_perm[0]);
219 214
    quats[ 8] = computeCenterQuat(1,centers_perm[1]);
220 215
    quats[11] = computeCenterQuat(2,centers_perm[2]);
......
234 229
    int totalTwist = computeCornerPerm(corners_perm,quats);
235 230
    int corners_perm_num = TablebaseHelpers.computeEvenPermutationNum(corners_perm);
236 231

  
237
//int ret = centers_perm_num + 12*(totalTwist + 32*corners_perm_num);
238
/*
239
if( ret<0 || ret>=138240 || ret==64898 || ret==13440 )
240
  {
241
  android.util.Log.e("D", "centers_perm: "+centers_perm_num+" twist: "+totalTwist+" corners_perm: "+corners_perm_num);
242
  android.util.Log.e("D", "centers_perm: "+center_perm[0]+" "+center_perm[1]+" "+center_perm[2]+" "+center_perm[3]);
243
  android.util.Log.e("D", "centers_quat: "+quats[6]+" "+quats[8]+" "+quats[11]+" "+quats[13]);
244
  android.util.Log.e("D", "corners_perm: "+corners_perm[0]+" "+corners_perm[1]+" "+corners_perm[2]+" "+corners_perm[3]+" "+corners_perm[4]+" "+corners_perm[5]);
245
  android.util.Log.e("D", "corners_quat: "+quats[0]+" "+quats[1]+" "+quats[2]+" "+quats[3]+" "+quats[4]+" "+quats[5]);
246
  }
247
*/
248
/*
249
if( ret==64898 )
250
  {
251
  android.util.Log.e("D", "getIndex: "+quats[0]+" "+quats[1]+" "+quats[2]+" "+quats[3]+" "+quats[4]+" "+quats[5]
252
  +" "+quats[6]+" "+quats[7]+" "+quats[8]+" "+quats[9]+" "+quats[10]+" "+quats[11]+" "+quats[12]+" "+quats[13]);
253
  }
254
*/
255
//android.util.Log.e("D", "index: centers_num="+centers_perm_num+" twist="+totalTwist+" corners_num="+corners_perm_num);
256
//android.util.Log.e("D", "index: corners_perm: "+corners_perm[0]+" "+corners_perm[1]+" "+corners_perm[2]+" "+corners_perm[3]+" "+corners_perm[4]+" "+corners_perm[5]);
257

  
258

  
259 232
    return centers_perm_num + 12*(totalTwist + 32*corners_perm_num);
260 233
    }
261 234
}  

Also available in: Unified diff