Project

General

Profile

« Previous | Next » 

Revision f171c91e

Added by Leszek Koltunski over 3 years ago

Square-1: progress with automatic scrambling.

View differences:

.gitignore
44 44
# yes, ignore the .iml
45 45
*.iml
46 46
/google-services.json
47
/release/output-metadata.json
src/main/java/org/distorted/objects/TwistySquare1.java
227 227
      { 3, 0, 4, 1, 0, 0 },
228 228
    };
229 229

  
230
  // quat indices that make corner cubits bandage the puzzle.
231
  private static final int[][] BAD_CORNER_QUATS = new int[][]
232
    {
233
      { 2, 8,17,23},
234
      { 5,11,14,20},
235
      { 8, 2,23,17},
236
      {11, 5,20,14},
237
      {17,23, 2, 8},
238
      {14,20, 5,11},
239
      {23,17, 8, 2},
240
      {20,14,11, 5}
241
    };
242

  
243
  // QUAT[i]*QUAT[j] = QUAT_MULT[i][j]
244
  private static final int[][] QUAT_MULT = new int[][]
245
    {
246
      {  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,},
247
      {  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,  0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 12,},
248
      {  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,  0,  1, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 12, 13,},
249
      {  3,  4,  5,  6,  7,  8,  9, 10, 11,  0,  1,  2, 15, 16, 17, 18, 19, 20, 21, 22, 23, 12, 13, 14,},
250
      {  4,  5,  6,  7,  8,  9, 10, 11,  0,  1,  2,  3, 16, 17, 18, 19, 20, 21, 22, 23, 12, 13, 14, 15,},
251
      {  5,  6,  7,  8,  9, 10, 11,  0,  1,  2,  3,  4, 17, 18, 19, 20, 21, 22, 23, 12, 13, 14, 15, 16,},
252
      {  6,  7,  8,  9, 10, 11,  0,  1,  2,  3,  4,  5, 18, 19, 20, 21, 22, 23, 12, 13, 14, 15, 16, 17,},
253
      {  7,  8,  9, 10, 11,  0,  1,  2,  3,  4,  5,  6, 19, 20, 21, 22, 23, 12, 13, 14, 15, 16, 17, 18,},
254
      {  8,  9, 10, 11,  0,  1,  2,  3,  4,  5,  6,  7, 20, 21, 22, 23, 12, 13, 14, 15, 16, 17, 18, 19,},
255
      {  9, 10, 11,  0,  1,  2,  3,  4,  5,  6,  7,  8, 21, 22, 23, 12, 13, 14, 15, 16, 17, 18, 19, 20,},
256
      { 10, 11,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 22, 23, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,},
257
      { 11,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 23, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,},
258
      { 12, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13,  0, 11, 10,  9,  8,  7,  6,  5,  4,  3,  2,  1,},
259
      { 13, 12, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14,  1,  0, 11, 10,  9,  8,  7,  6,  5,  4,  3,  2,},
260
      { 14, 13, 12, 23, 22, 21, 20, 19, 18, 17, 16, 15,  2,  1,  0, 11, 10,  9,  8,  7,  6,  5,  4,  3,},
261
      { 15, 14, 13, 12, 23, 22, 21, 20, 19, 18, 17, 16,  3,  2,  1,  0, 11, 10,  9,  8,  7,  6,  5,  4,},
262
      { 16, 15, 14, 13, 12, 23, 22, 21, 20, 19, 18, 17,  4,  3,  2,  1,  0, 11, 10,  9,  8,  7,  6,  5,},
263
      { 17, 16, 15, 14, 13, 12, 23, 22, 21, 20, 19, 18,  5,  4,  3,  2,  1,  0, 11, 10,  9,  8,  7,  6,},
264
      { 18, 17, 16, 15, 14, 13, 12, 23, 22, 21, 20, 19,  6,  5,  4,  3,  2,  1,  0, 11, 10,  9,  8,  7,},
265
      { 19, 18, 17, 16, 15, 14, 13, 12, 23, 22, 21, 20,  7,  6,  5,  4,  3,  2,  1,  0, 11, 10,  9,  8,},
266
      { 20, 19, 18, 17, 16, 15, 14, 13, 12, 23, 22, 21,  8,  7,  6,  5,  4,  3,  2,  1,  0, 11, 10,  9,},
267
      { 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 23, 22,  9,  8,  7,  6,  5,  4,  3,  2,  1,  0, 11, 10,},
268
      { 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 23, 10,  9,  8,  7,  6,  5,  4,  3,  2,  1,  0, 11,},
269
      { 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10,  9,  8,  7,  6,  5,  4,  3,  2,  1,  0,}
270
    };
271

  
230 272
  private static MeshBase[] mMeshes;
231 273

  
232 274
///////////////////////////////////////////////////////////////////////////////////////////////////
src/main/res/raw/compute_quats.c
136 136

  
137 137
///////////////////////////////////////////////////////////////////
138 138

  
139
void insert(float* quat, float* to)
139
int getIndexInTable(float* quat, float* table)
140 140
  {
141 141
  for(int i=0; i<inserted; i++)
142 142
    {
143
    if( is_the_same(quat,to+4*i)==1 ) return;
143
    if( is_the_same(quat,table+4*i)==1 ) return i;
144 144
    }
145 145

  
146
  if( inserted<NUM_QUATS )
147
    {
148
    to[4*inserted+0] = quat[0];
149
    to[4*inserted+1] = quat[1];
150
    to[4*inserted+2] = quat[2];
151
    to[4*inserted+3] = quat[3];
146
  return -1;
147
  }
152 148

  
153
    inserted++;
154
    }
155
  else
149
///////////////////////////////////////////////////////////////////
150

  
151
void insert(float* quat, float* table)
152
  {
153
  if( getIndexInTable(quat,table)<0 )
156 154
    {
157
    printf("Error: inserted=%d\n", inserted);
155
    if( inserted<NUM_QUATS )
156
      {
157
      table[4*inserted+0] = quat[0];
158
      table[4*inserted+1] = quat[1];
159
      table[4*inserted+2] = quat[2];
160
      table[4*inserted+3] = quat[3];
161

  
162
      inserted++;
163
      }
164
    else printf("Error: inserted=%d\n", inserted);
158 165
    }
159 166
  }
160 167

  
......
207 214
    }
208 215
  while( num < inserted );
209 216

  
217
  printf("\n");
218

  
210 219
  for(int i=0; i<inserted; i++)
211 220
    {
212 221
    printf( "%2d %7.4f %7.4f %7.4f %7.4f\n", i, table[4*i], table[4*i+1], table[4*i+2], table[4*i+3] );
213 222
    }
214 223

  
224
  printf("\n");
225

  
226
  for(int i=0; i<inserted; i++)
227
    {
228
    printf("{");
229

  
230
    for(int j=0; j<inserted; j++)
231
      {
232
      multiply_quats( table+4*i, table+4*j, tmp);
233
      num = getIndexInTable(tmp,table);
234
      printf("%3d," , num);
235
      }
236
    printf("},\n");
237
    }
238
 
215 239
return 0;
216 240
}

Also available in: Unified diff