Project

General

Profile

« Previous | Next » 

Revision d54d1f8a

Added by Leszek Koltunski about 1 year ago

first attempt at Icosamate
new PL tutorial for the Crazy Planets

View differences:

src/main/java/org/distorted/objectlib/main/ObjectSignatures.java
82 82
  public static final int PDIA_3 = ObjectType.PDIA_3.ordinal();
83 83
  public static final int BALL_4 = ObjectType.BALL_4.ordinal();
84 84
  public static final int CA_333 = ObjectType.CA_333.ordinal();
85
  public static final int ICOS_2 = ObjectType.ICOS_2.ordinal();
85 86
  }
src/main/java/org/distorted/objectlib/main/ObjectType.java
100 100
  PDUO_2 ( TwistyPyraminxDuo.class    ,  4, R.drawable.pduo_2, true,     0, new InitData(new int[] {2,2,2,2})),
101 101
  PDIA_3 ( TwistyPyraminxDiamond.class, 12, R.drawable.pdia_3, true,    40, new InitData(new int[] {3,3,3})),
102 102

  
103
  ICOS_2 ( TwistyIcosamate.class      , 32, R.drawable.pdia_3, true,    60, new InitData(new int[] {2,2,2,2,2,2})),
103 104
  BALL_4 ( TwistyMasterball.class     , 28, R.drawable.ball_4, false,   70, new InitData(new int[] {4,2,2,2,2})),
104 105
  BAN5_4 ( TwistyBandagedCuboid.class , 48, R.drawable.ban5_4, false,   50, new InitData(new int[] {4,4,4}, TwistyBandagedCuboid.POS_5)),
105 106
  BAN6_4 ( TwistyBandagedCuboid.class ,487, R.drawable.ban6_4, false,   50, new InitData(new int[] {4,4,4}, TwistyBandagedCuboid.POS_6)),
src/main/java/org/distorted/objectlib/objects/TwistyCrazy3x3.java
1114 1114
                                          {"fr","vDnAy1qYSCc","Solution crazy 3x3x3 Mercure 2b/4","Laurent Boss"},
1115 1115
                                          {"fr","_eEILlsLurc","Solution crazy 3x3x3 Mercure 3/4","Laurent Boss"},
1116 1116
                                          {"fr","4D3V9c3u7so","Solution crazy 3x3x3 Mercure 4/4","Laurent Boss"},
1117
                                          {"pl","nK_5erOuKnI","Crazy 3x3 Mercury TUTORIAL PL","MrUK"},
1117 1118
                                          {"br","bMuDIEemCkI","Resolver Crazy Mercurio 1/5","Rafael Cinoto"},
1118 1119
                                          {"br","FPP_nvOsnIQ","Resolver Crazy Mercurio 2/5","Rafael Cinoto"},
1119 1120
                                          {"br","ouz20eYDlLM","Resolver Crazy Mercurio 3/5","Rafael Cinoto"},
......
1136 1137
                                          {"fr","BkV1dyWIH1Q","Solution crazy 3x3x3 Venus 4/6","Laurent Boss"},
1137 1138
                                          {"fr","spO_rh09h9s","Solution crazy 3x3x3 Venus 5/6","Laurent Boss"},
1138 1139
                                          {"fr","kEmXDJgO0B4","Solution crazy 3x3x3 Venus 6/6","Laurent Boss"},
1140
                                          {"pl","_G9zUNH5Gfc","Crazy 3x3 Venus TUTORIAL PL","MrUK"},
1139 1141
                                          {"br","i781Mf0Fuag","Resolver Crazy Venus 1/3","Rafael Cinoto"},
1140 1142
                                          {"br","3m0eyKbLaQ4","Resolver Crazy Venus 2/3","Rafael Cinoto"},
1141 1143
                                          {"br","nKamBHo7oxo","Resolver Crazy Venus 3/3","Rafael Cinoto"},
......
1159 1161
                                          {"fr","0awyEJmfuMM","Solution crazy 3x3x3 Terre 4/6","Laurent Boss"},
1160 1162
                                          {"fr","xLKGyRXuaGs","Solution crazy 3x3x3 Terre 5/6","Laurent Boss"},
1161 1163
                                          {"fr","CcunFHHhQ7g","Solution crazy 3x3x3 Terre 6/6","Laurent Boss"},
1164
                                          {"pl","HekADKw5bio","Crazy 3x3 Earth TUTORIAL PL","MrUK"},
1162 1165
                                          {"kr","4YBV9TnAzlg","크레이지(Crazy) 333 지구 1/5","듀나메스 큐브 해법연구소"},
1163 1166
                                          {"kr","uWbAgUq-IqU","크레이지(Crazy) 333 지구 2/5","듀나메스 큐브 해법연구소"},
1164 1167
                                          {"kr","glZqE9hQXK8","크레이지(Crazy) 333 지구 3/5","듀나메스 큐브 해법연구소"},
......
1179 1182
                                          {"fr","TlgsnVdkNh4","Solution crazy 3x3x3 Mars 4/6","Laurent Boss"},
1180 1183
                                          {"fr","XxVeGY1IYIc","Solution crazy 3x3x3 Mars 5/6","Laurent Boss"},
1181 1184
                                          {"fr","aK9YYEYMsyA","Solution crazy 3x3x3 Mars 6/6","Laurent Boss"},
1185
                                          {"pl","VGmF9-d5cR4","Crazy 3x3 Mars TUTORIAL PL","MrUK"},
1182 1186
                                          {"kr","QKu2p9nNxFk","크레이지 333 화성 1/4","듀나메스 큐브 해법연구소"},
1183 1187
                                          {"kr","f5YYqm6PPms","크레이지 333 화성 2a/4","듀나메스 큐브 해법연구소"},
1184 1188
                                          {"kr","nmNxrpvucIg","크레이지 333 화성 2b/4","듀나메스 큐브 해법연구소"},
src/main/java/org/distorted/objectlib/objects/TwistyDodecahedron.java
438 438

  
439 439
  public int[][] getBasicAngles()
440 440
    {
441
    if( mBasicAngle ==null )
441
    if( mBasicAngle==null )
442 442
      {
443 443
      int num = getNumLayers()[0];
444 444
      int[] tmp = new int[num];
src/main/java/org/distorted/objectlib/objects/TwistyIcosamate.java
1
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2023 Leszek Koltunski                                                               //
3
//                                                                                               //
4
// This file is part of Magic Cube.                                                              //
5
//                                                                                               //
6
// Magic Cube is proprietary software licensed under an EULA which you should have received      //
7
// along with the code. If not, check https://distorted.org/magic/License-Magic-Cube.html        //
8
///////////////////////////////////////////////////////////////////////////////////////////////////
9

  
10
package org.distorted.objectlib.objects;
11

  
12
import static org.distorted.objectlib.touchcontrol.TouchControl.TC_ICOSAHEDRON;
13
import static org.distorted.objectlib.touchcontrol.TouchControl.TYPE_NOT_SPLIT;
14

  
15
import org.distorted.library.type.Static3D;
16
import org.distorted.library.type.Static4D;
17
import org.distorted.objectlib.helpers.FactoryCubit;
18
import org.distorted.objectlib.helpers.ObjectFaceShape;
19
import org.distorted.objectlib.helpers.ObjectShape;
20
import org.distorted.objectlib.helpers.ObjectSignature;
21
import org.distorted.objectlib.helpers.ObjectVertexEffects;
22
import org.distorted.objectlib.main.InitAssets;
23
import org.distorted.objectlib.main.InitData;
24
import org.distorted.objectlib.main.ObjectSignatures;
25
import org.distorted.objectlib.main.ObjectType;
26
import org.distorted.objectlib.scrambling.ScrambleEdgeGenerator;
27
import org.distorted.objectlib.shape.ShapeHexahedron;
28
import org.distorted.objectlib.touchcontrol.TouchControlIcosahedron;
29

  
30
///////////////////////////////////////////////////////////////////////////////////////////////////
31

  
32
public class TwistyIcosamate extends ShapeHexahedron
33
{
34
  // topmost vertex (0,A,0) and 3 vertices from the second-topmost-layer, front one and two ones
35
  // to the right: (0,B,C) , (D,B,E) , (F,B,H)
36

  
37
  private static final float Z = (float)Math.sqrt(5+SQ5);
38

  
39
  private static final float A = Z*(SQ2/4);
40
  private static final float B = Z*(SQ2*SQ5/20);
41
  private static final float C = Z*(SQ2*SQ5/10);
42
  private static final float D = (SQ5+1)/4;
43
  private static final float E = Z*(SQ5-1)/(4*SQ2*SQ5);
44
  private static final float F = 0.5f;
45
  private static final float H =-Z*(SQ5+1)/(4*SQ2*SQ5);
46

  
47
  private static final float X1 = D/3;
48
  private static final float X2 = (D+F)/3;
49
  private static final float X3 = (2*D+F)/3;
50
  private static final float X4 = (D+F)/2;
51
  private static final float Y1 = (A+2*B)/3;
52
  private static final float Y2 = B/3;
53
  private static final float Z1 = (C+E)/3;
54
  private static final float Z2 = (E+H)/3;
55
  private static final float Z3 = 2*H/3;
56
  private static final float Z4 = (C-2*H)/3;
57
  private static final float Z5 = -H/3;
58
  private static final float Z6 = (H-C-E)/3;
59

  
60
  static final Static3D[] ROT_AXIS = new Static3D[]
61
         {
62
           new Static3D(   0,  1,  0),
63
           new Static3D(   0,B/A,C/A),
64
           new Static3D( D/A,B/A,E/A),
65
           new Static3D( F/A,B/A,H/A),
66
           new Static3D(-F/A,B/A,H/A),
67
           new Static3D(-D/A,B/A,E/A)
68
         };
69

  
70
  private int[][] mEdges;
71
  private int[][] mBasicAngle;
72
  private float[][] mCuts;
73
  private float[][] mPosition;
74

  
75
///////////////////////////////////////////////////////////////////////////////////////////////////
76

  
77
  public TwistyIcosamate(int meshState, int iconMode, Static4D quat, Static3D move, float scale, InitData data, InitAssets asset)
78
    {
79
    super(meshState, iconMode, data.getNumLayers()[0], quat, move, scale, data, asset);
80
    }
81

  
82
///////////////////////////////////////////////////////////////////////////////////////////////////
83

  
84
  public int[][] getScrambleEdges()
85
    {
86
    if( mEdges==null )
87
      {
88
      int[][] basicAngle = getBasicAngles();
89
      mEdges = ScrambleEdgeGenerator.getScrambleEdgesSingle(basicAngle);
90
      }
91

  
92
    return mEdges;
93
    }
94

  
95
///////////////////////////////////////////////////////////////////////////////////////////////////
96

  
97
  public float[][] getCuts(int[] numLayers)
98
    {
99
    if( mCuts==null )
100
      {
101
      float[] cut = new float[] {0};
102
      mCuts = new float[][] { cut,cut,cut,cut,cut,cut };
103
      }
104

  
105
    return mCuts;
106
    }
107

  
108
///////////////////////////////////////////////////////////////////////////////////////////////////
109

  
110
  public boolean[][] getLayerRotatable(int[] numLayers)
111
    {
112
    boolean[] tmp = new boolean[] {true,true};
113
    return new boolean[][] { tmp,tmp,tmp,tmp,tmp,tmp };
114
    }
115

  
116
///////////////////////////////////////////////////////////////////////////////////////////////////
117

  
118
  public int getTouchControlType()
119
    {
120
    return TC_ICOSAHEDRON;
121
    }
122

  
123
///////////////////////////////////////////////////////////////////////////////////////////////////
124

  
125
  public int getTouchControlSplit()
126
    {
127
    return TYPE_NOT_SPLIT;
128
    }
129

  
130
///////////////////////////////////////////////////////////////////////////////////////////////////
131

  
132
  public int[][][] getEnabled()
133
    {
134
    return new int[][][]
135
      {
136
          {{3,4,5}}, {{1,4,5}}, {{1,2,5}}, {{1,2,3}}, {{2,3,4}},
137
          {{0,2,5}}, {{0,1,3}}, {{0,2,4}}, {{0,3,5}}, {{0,1,4}},
138
          {{0,2,5}}, {{0,1,3}}, {{0,2,4}}, {{0,3,5}}, {{0,1,4}},
139
          {{3,4,5}}, {{1,4,5}}, {{1,2,5}}, {{1,2,3}}, {{2,3,4}},
140
      };
141
    }
142

  
143
///////////////////////////////////////////////////////////////////////////////////////////////////
144

  
145
  public float[] getDist3D(int[] numLayers)
146
    {
147
    return TouchControlIcosahedron.D3D;
148
    }
149

  
150
///////////////////////////////////////////////////////////////////////////////////////////////////
151

  
152
  public Static3D[] getFaceAxis()
153
    {
154
    return TouchControlIcosahedron.FACE_AXIS;
155
    }
156

  
157
///////////////////////////////////////////////////////////////////////////////////////////////////
158

  
159
  public float[][] getCubitPositions(int[] numLayers)
160
    {
161
    if( mPosition==null )
162
      {
163
      mPosition = new float[][]
164
         {
165
             { 0, A, 0},
166

  
167
             { 0, B, C},
168
             { D, B, E},
169
             { F, B, H},
170
             {-F, B, H},
171
             {-D, B, E},
172

  
173
             { D,-B,-E},
174
             { F,-B,-H},
175
             {-F,-B,-H},
176
             {-D,-B,-E},
177
             { 0,-B,-C},
178

  
179
             { 0,-A, 0},
180

  
181
             {    X1, Y1, Z1   },
182
             {    X2, Y1, Z2   },
183
             {     0, Y1, Z3   },
184
             {   -X2, Y1, Z2   },
185
             {   -X1, Y1, Z1   },
186

  
187
             {     0,-Y2, Z4   },
188
             {    X3,-Y2, Z5   },
189
             {    X4,-Y2, Z6   },
190
             {   -X4,-Y2, Z6   },
191
             {   -X3,-Y2, Z5   },
192

  
193
             {     0, Y2,-Z4   },
194
             {   -X3, Y2,-Z5   },
195
             {   -X4, Y2,-Z6   },
196
             {    X4, Y2,-Z6   },
197
             {    X3, Y2,-Z5   },
198

  
199
             {   -X1,-Y1,-Z1   },
200
             {   -X2,-Y1,-Z2   },
201
             {     0,-Y1,-Z3   },
202
             {    X2,-Y1,-Z2   },
203
             {    X1,-Y1,-Z1   },
204
         };
205
      }
206

  
207
    return mPosition;
208
    }
209

  
210
///////////////////////////////////////////////////////////////////////////////////////////////////
211

  
212
  public Static4D getCubitQuats(int cubit, int[] numLayers)
213
    {
214
    return mObjectQuats[0];  // TODO
215
    }
216

  
217
///////////////////////////////////////////////////////////////////////////////////////////////////
218

  
219
  private float[][] getVertices(int variant)
220
    {
221
    if( variant==0 )
222
      {
223
      float H1 = (B-A)/2;
224
      return new float[][] { {0,0,0},{0,H1,C/2},{D/2,H1,E/2},{F/2,H1,H/2},{-F/2,H1,H/2},{-D/2,H1,E/2},{0,-A,0} };
225
      }
226
    else
227
      {
228
      return new float[][] { {F/2,Y2,(C-H)/2-Z4},{0,-B+Y2,-H-Z4},{-F/2,Y2,(C-H)/2-Z4},{0,Y2,-Z4} };
229
      }
230
    }
231

  
232
///////////////////////////////////////////////////////////////////////////////////////////////////
233

  
234
  public ObjectShape getObjectShape(int variant)
235
    {
236
    if( variant==0 )
237
      {
238
      int[][] indices =
239
          {
240
              {1,2,0},{2,3,0},{3,4,0},{4,5,0},{5,1,0}, {6,2,1},{6,3,2},{6,4,3},{6,5,4},{6,1,5}
241
          };
242

  
243
      return new ObjectShape(getVertices(variant), indices);
244
      }
245
    else
246
      {
247
      int[][] indices =
248
          {
249
              {0,2,1},{0,1,3},{2,0,3},{1,2,3}
250
          };
251

  
252
      return new ObjectShape(getVertices(variant), indices);
253
      }
254
    }
255

  
256
///////////////////////////////////////////////////////////////////////////////////////////////////
257

  
258
  public ObjectFaceShape getObjectFaceShape(int variant)
259
    {
260
    if( variant==0 )
261
      {
262
      float h1 = isInIconMode() ? 0.001f : 0.04f;
263
      float h2 = 0.001f;
264
      float[][] bands = { {h1,27,0.2f,0.4f,5,0,0}, {h2,27,0.2f,0.4f,3,0,0} };
265
      int[] indices   = { 0,0,0,0,0, 1,1,1,1,1,1 };
266
      return new ObjectFaceShape(bands,indices,null);
267
      }
268
    else
269
      {
270
      float h1 = isInIconMode() ? 0.001f : 0.04f;
271
      float h2 = 0.001f;
272
      float[][] bands = { {h1,25,0.2f,0.4f,5,0,0}, {h2,25,0.2f,0.4f,3,0,0} };
273
      int[] indices   = { 0,1,1,1 };
274
      return new ObjectFaceShape(bands,indices,null);
275
      }
276
    }
277

  
278
///////////////////////////////////////////////////////////////////////////////////////////////////
279

  
280
  public ObjectVertexEffects getVertexEffects(int variant)
281
    {
282
    if( variant==0 )
283
      {
284
      float[][] corners  = { {0.04f,0.12f},{0.04f,0.10f} };
285
      int[] cornerIndices= { 0,1,1,1,1,1,-1 };
286
      float[][] centers  = { {0,-A/2,0} };
287
      int[] centerIndices= { 0,0,0,0,0,0,-1 };
288
      return FactoryCubit.generateVertexEffect(getVertices(variant),corners,cornerIndices,centers,centerIndices);
289
      }
290
    else
291
      {
292
      float[][] corners = { {0.04f,0.15f} };
293
      int[] indices     = { 0,0,0,-1 };
294
      float[][] centers = { {0,Y2/2,-Z4/2} };
295
      return FactoryCubit.generateVertexEffect(getVertices(variant),corners,indices,centers,indices);
296
      }
297
    }
298

  
299
///////////////////////////////////////////////////////////////////////////////////////////////////
300

  
301
  public int getNumCubitVariants(int[] numLayers)
302
    {
303
    return 2;
304
    }
305

  
306
///////////////////////////////////////////////////////////////////////////////////////////////////
307

  
308
  public int getCubitVariant(int cubit, int[] numLayers)
309
    {
310
    return cubit<12 ? 0:1;
311
    }
312

  
313
///////////////////////////////////////////////////////////////////////////////////////////////////
314

  
315
  public float getStickerRadius()
316
    {
317
    return 0.09f;
318
    }
319

  
320
///////////////////////////////////////////////////////////////////////////////////////////////////
321

  
322
  public float getStickerStroke()
323
    {
324
    return isInIconMode() ? 0.20f : 0.09f;
325
    }
326

  
327
///////////////////////////////////////////////////////////////////////////////////////////////////
328

  
329
  public float[][] getStickerAngles()
330
    {
331
    return null;
332
    }
333

  
334
///////////////////////////////////////////////////////////////////////////////////////////////////
335
// PUBLIC API
336

  
337
  public Static3D[] getRotationAxis()
338
    {
339
    return ROT_AXIS;
340
    }
341

  
342
///////////////////////////////////////////////////////////////////////////////////////////////////
343

  
344
  public int[][] getBasicAngles()
345
    {
346
    if( mBasicAngle==null )
347
      {
348
      int num = getNumLayers()[0];
349
      int[] tmp = new int[num];
350
      for(int i=0; i<num; i++) tmp[i] = 5;
351
      mBasicAngle = new int[][] { tmp,tmp,tmp,tmp,tmp,tmp };
352
      }
353

  
354
    return mBasicAngle;
355
    }
356

  
357
///////////////////////////////////////////////////////////////////////////////////////////////////
358

  
359
  public String getShortName()
360
    {
361
    return ObjectType.ICOS_2.name();
362
    }
363

  
364
///////////////////////////////////////////////////////////////////////////////////////////////////
365

  
366
  public ObjectSignature getSignature()
367
    {
368
    return new ObjectSignature(ObjectSignatures.ICOS_2);
369
    }
370

  
371
///////////////////////////////////////////////////////////////////////////////////////////////////
372

  
373
  public String getObjectName()
374
    {
375
    return "Icosamate";
376
    }
377

  
378
///////////////////////////////////////////////////////////////////////////////////////////////////
379

  
380
  public String getInventor()
381
    {
382
    return "Jason Smith";
383
    }
384

  
385
///////////////////////////////////////////////////////////////////////////////////////////////////
386

  
387
  public int getYearOfInvention()
388
    {
389
    return 2010;
390
    }
391

  
392
///////////////////////////////////////////////////////////////////////////////////////////////////
393

  
394
  public int getComplexity()
395
    {
396
    return 3;
397
    }
398

  
399
///////////////////////////////////////////////////////////////////////////////////////////////////
400

  
401
  public String[][] getTutorials()
402
    {
403
    return new String[][] {
404
                            {"gb","e7Es4Zx6Sl4","Icosamate introduction & algorithms","Superantoniovivaldi"},
405
                            {"gb","ZhkklbYfs98","Icosamate solve","Superantoniovivaldi"},
406
                            {"pl","eJTLTeoicWI","Icosamate TUTORIAL PL","MrUK"},
407
                            {"vn","RVjjxj9rPeg","BẠN PHẠM BẢO GIẢI ICOSAMATE","VĂN CÔNG TÙNG"},
408
                          };
409
    }
410
}
src/main/java/org/distorted/objectlib/touchcontrol/TouchControlIcosahedron.java
35 35
  private static final float A = Z*(SQ2/4);
36 36
  private static final float B = Z*(SQ2*SQ5/20);
37 37
  private static final float C = Z*(SQ2*SQ5/10);
38
  private static final float D = Z*(SQ5-1)/(4*SQ2*SQ5);
39
  private static final float E = (SQ5+1)/4;
38
  private static final float D = (SQ5+1)/4;
39
  private static final float E = Z*(SQ5-1)/(4*SQ2*SQ5);
40 40
  private static final float F = 0.5f;
41 41
  private static final float H =-Z*(SQ5+1)/(4*SQ2*SQ5);
42 42

  
......
53 53
  private static final float Z5 = -H/3;
54 54
  private static final float Z6 = (H-C-E)/3;
55 55

  
56
  private static final float LEN = (float)Math.sqrt(X1*X1 + Y1*Y1 + Z1*Z1);
57

  
56 58
  public static final Static3D[] FACE_AXIS = new Static3D[]
57 59
         {
58
           new Static3D(    X1, Y1, Z1   ),
59
           new Static3D(    X2, Y1, Z2   ),
60
           new Static3D(  0.0f, Y1, Z3   ),
61
           new Static3D(   -X2, Y1, Z2   ),
62
           new Static3D(   -X1, Y1, Z1   ),
63

  
64
           new Static3D(  0.0f,-Y2, Z4   ),
65
           new Static3D(    X3,-Y2, Z5   ),
66
           new Static3D(    X4,-Y2, Z6   ),
67
           new Static3D(   -X4,-Y2, Z6   ),
68
           new Static3D(   -X3,-Y2, Z5   ),
69

  
70
           new Static3D(  0.0f, Y2,-Z4   ),
71
           new Static3D(   -X3, Y2,-Z5   ),
72
           new Static3D(   -X4, Y2,-Z6   ),
73
           new Static3D(    X4, Y2,-Z6   ),
74
           new Static3D(    X3, Y2,-Z5   ),
75

  
76
           new Static3D(   -X1,-Y1,-Z1   ),
77
           new Static3D(   -X2,-Y1,-Z2   ),
78
           new Static3D(  0.0f,-Y1,-Z3   ),
79
           new Static3D(    X2,-Y1,-Z2   ),
80
           new Static3D(    X1,-Y1,-Z1   ),
60
           new Static3D(    X1/LEN, Y1/LEN, Z1/LEN   ),
61
           new Static3D(    X2/LEN, Y1/LEN, Z2/LEN   ),
62
           new Static3D(  0.0f/LEN, Y1/LEN, Z3/LEN   ),
63
           new Static3D(   -X2/LEN, Y1/LEN, Z2/LEN   ),
64
           new Static3D(   -X1/LEN, Y1/LEN, Z1/LEN   ),
65

  
66
           new Static3D(  0.0f/LEN,-Y2/LEN, Z4/LEN   ),
67
           new Static3D(    X3/LEN,-Y2/LEN, Z5/LEN   ),
68
           new Static3D(    X4/LEN,-Y2/LEN, Z6/LEN   ),
69
           new Static3D(   -X4/LEN,-Y2/LEN, Z6/LEN   ),
70
           new Static3D(   -X3/LEN,-Y2/LEN, Z5/LEN   ),
71

  
72
           new Static3D(  0.0f/LEN, Y2/LEN,-Z4/LEN   ),
73
           new Static3D(   -X3/LEN, Y2/LEN,-Z5/LEN   ),
74
           new Static3D(   -X4/LEN, Y2/LEN,-Z6/LEN   ),
75
           new Static3D(    X4/LEN, Y2/LEN,-Z6/LEN   ),
76
           new Static3D(    X3/LEN, Y2/LEN,-Z5/LEN   ),
77

  
78
           new Static3D(   -X1/LEN,-Y1/LEN,-Z1/LEN   ),
79
           new Static3D(   -X2/LEN,-Y1/LEN,-Z2/LEN   ),
80
           new Static3D(  0.0f/LEN,-Y1/LEN,-Z3/LEN   ),
81
           new Static3D(    X2/LEN,-Y1/LEN,-Z2/LEN   ),
82
           new Static3D(    X1/LEN,-Y1/LEN,-Z1/LEN   ),
81 83
         };
82 84

  
83 85
///////////////////////////////////////////////////////////////////////////////////////////////////

Also available in: Unified diff