Project

General

Profile

« Previous | Next » 

Revision 18a5f95f

Added by Leszek Koltunski about 4 years ago

Progress with the Ivy

View differences:

src/main/java/org/distorted/objects/FactoryCubit.java
39 39
  private static final float SQ3 = (float)Math.sqrt(3);
40 40
  private static final float SQ6 = (float)Math.sqrt(6);
41 41

  
42
  private static final float IVY_D = 0.05f;
42
  private static final float IVY_D = 0.10f;
43 43
  private static final int   IVY_N = 8;
44 44

  
45 45
  private static final Static1D RADIUS = new Static1D(1);
......
502 502

  
503 503
  MeshBase createFacesIvyCorner()
504 504
    {
505
    MeshBase mesh = createFacesSkewbCorner();
506
    mesh.addEmptyTexComponent();
507
    return mesh;
505
    return createFacesSkewbCorner();
508 506
    }
509 507

  
510 508
///////////////////////////////////////////////////////////////////////////////////////////////////
......
514 512
    MeshBase[] meshes = new MeshBase[2];
515 513

  
516 514
    final float angle = (float)Math.PI/(2*IVY_N);
515
    final float CORR  = 1.0f - IVY_D*SQ2;
517 516
    float[] vertices = new float[4*IVY_N];
518 517

  
519 518
    for(int i=0; i<IVY_N; i++)
......
521 520
      float sin = (float)Math.sin(i*angle);
522 521
      float cos = (float)Math.cos(i*angle);
523 522

  
524
      vertices[2*i          ] = 0.5f-cos;
525
      vertices[2*i+1        ] = 0.5f-sin;
526
      vertices[2*i  +2*IVY_N] = cos-0.5f;
527
      vertices[2*i+1+2*IVY_N] = sin-0.5f;
523
      vertices[2*i          ] = CORR*(0.5f-cos);
524
      vertices[2*i+1        ] = CORR*(0.5f-sin);
525
      vertices[2*i  +2*IVY_N] = CORR*(cos-0.5f);
526
      vertices[2*i+1+2*IVY_N] = CORR*(sin-0.5f);
528 527
      }
529 528

  
530
    float[] bands0 = computeBands(+0.08f,35,0.5f,0.7f,6);
529
    float[] bands0 = computeBands(+0.05f,35,0.5f,0.5f,5);
531 530
    float[] bands1 = computeBands(-0.10f,45,0.5f,0.0f,2);
532 531

  
533
    meshes[0] = new MeshPolygon(vertices,bands0,1,1);
532
    meshes[0] = new MeshPolygon(vertices,bands0,0,0);
534 533
    meshes[0].setEffectAssociation(0,1,0);
535 534
    meshes[1] = new MeshPolygon(vertices,bands1,0,0);
536 535
    meshes[1].setEffectAssociation(0,2,0);
......
1226 1225
    {
1227 1226
    MeshBase mesh = createFacesIvyFace();
1228 1227

  
1229
    Static3D center = new Static3D(0.0f,0.0f,-0.5f);
1228
    float DIST = SQ2*(0.5f-IVY_D);
1229
    Static3D center = new Static3D(0.0f,0.0f,-0.0f);
1230 1230
    Static3D[] vertices = new Static3D[2];
1231
    vertices[0] = new Static3D(+SQ2/2 -IVY_D,-SQ2/2 +IVY_D,+0.0f);
1232
    vertices[1] = new Static3D(-SQ2/2 +IVY_D,+SQ2/2 -IVY_D,+0.0f);
1231
    vertices[0] = new Static3D(+DIST,-DIST,+0.0f);
1232
    vertices[1] = new Static3D(-DIST,+DIST,+0.0f);
1233 1233

  
1234
    roundCorners(mesh,center,vertices,0.06f,0.12f);
1234
    roundCorners(mesh,center,vertices,0.10f,0.30f);
1235 1235

  
1236 1236
    mesh.mergeEffComponents();
1237 1237
    mesh.addEmptyTexComponent();
1238 1238
    mesh.addEmptyTexComponent();
1239 1239
    mesh.addEmptyTexComponent();
1240 1240
    mesh.addEmptyTexComponent();
1241
    mesh.addEmptyTexComponent();
1242 1241

  
1243 1242
    return mesh;
1244 1243
    }
src/main/java/org/distorted/objects/TwistyIvy.java
40 40

  
41 41
public class TwistyIvy extends TwistyObject
42 42
{
43
  private static final int FACES_PER_CUBIT =7;
43
  private static final int FACES_PER_CUBIT =6;
44 44

  
45 45
  // the four rotation axis of a RubikIvy. Must be normalized.
46 46
  static final Static3D[] ROT_AXIS = new Static3D[]
......
76 76
           new Static4D(  0.5f, -0.5f, -0.5f, -0.5f )
77 77
         };
78 78

  
79
  private static final int[][] mCornerMap =
79
  private static final int[][] mFaceMap =
80 80
         {
81
           {  4, 2, 0, 12,12,12,12 },
82
           {  5, 2, 1, 12,12,12,12 },
83
           {  4, 3, 1, 12,12,12,12 },
84
           {  5, 3, 0, 12,12,12,12 },
85
         };
86

  
87
  private static final int[][] mCenterMap =
88
         {
89
           {  6, 12,12,12,12,12,12 },
90
           {  7, 12,12,12,12,12,12 },
91
           {  8, 12,12,12,12,12,12 },
92
           {  9, 12,12,12,12,12,12 },
93
           { 10, 12,12,12,12,12,12 },
94
           { 11, 12,12,12,12,12,12 },
81
           {  4, 2, 0, 12,12,12 },
82
           {  5, 2, 1, 12,12,12 },
83
           {  4, 3, 1, 12,12,12 },
84
           {  5, 3, 0, 12,12,12 },
85

  
86
           {  6, 12,12,12,12,12 },
87
           {  7, 12,12,12,12,12 },
88
           {  8, 12,12,12,12,12 },
89
           {  9, 12,12,12,12,12 },
90
           { 10, 12,12,12,12,12 },
91
           { 11, 12,12,12,12,12 },
95 92
         };
96 93

  
97 94
  private static MeshBase mCornerMesh, mFaceMesh;
......
228 225

  
229 226
  int getFaceColor(int cubit, int cubitface, int numLayers)
230 227
    {
231
    if( cubit<4 )
232
      {
233
      return mCornerMap[cubit][cubitface];
234
      }
235
    else
236
      {
237
      return mCenterMap[cubit-4][cubitface];
238
      }
228
    return mFaceMap[cubit][cubitface];
239 229
    }
240 230

  
241 231
///////////////////////////////////////////////////////////////////////////////////////////////////

Also available in: Unified diff