Project

General

Profile

« Previous | Next » 

Revision 2fcfce81

Added by Leszek Koltunski about 4 years ago

CubitFactory: unify creating MeshPolygon bands.

View differences:

src/main/java/org/distorted/objects/CubitFactory.java
59 59
    return mThis;
60 60
    }
61 61

  
62
///////////////////////////////////////////////////////////////////////////////////////////////////
63
// H - height of the band in the middle
64
// alpha - angle of the edge  [0,90]
65
// dist - often in a polygon the distance from edge to center is not 1, but something else.
66
// This is the distance.
67
// K - where to begin the second, much more flat part of the band. [0,1]
68
// N - number of bands. N>=3
69
//
70
// theory: two distinct parts to the band:
71
// 1) (0,B) - steep
72
// 2) (B,1) - flat
73
//
74
// In first part, we have y = g(x) ; in second - y = g(f(x)) where
75
//
76
// g(x) = sqrt( R^2 - (x-D)^2 ) - R*cos(alpha)
77
// f(x) = ((D-B)/(1-B)*x + B*(1-D)/(1-B)
78
// h(x) = R*(sin(alpha) - sin(x))
79
// R = H/(1-cos(alpha))
80
// D = H*sin(alpha)
81
// B = h(K*alpha)
82
//
83
// The N points are taken at:
84
//
85
// 1) in the second part, there are K2 = (N-3)/3 such points
86
// 2) in the first - K1 = (N-3) - K2
87
// 3) also, the 3 points 0,B,1
88
//
89
// so we have the sequence A[i] of N points
90
//
91
// 0
92
// h((i+1)*(1-K)*alpha/(K1+1)) (i=0,1,...,K1-1)
93
// B
94
// (1-B)*(i+1)/(K2+1) + B   (i=0,i,...,K2-1)
95
// 1
96

  
97
///////////////////////////////////////////////////////////////////////////////////////////////////
98

  
99
  private float f(float D, float B, float x)
100
    {
101
    return ((D-B)*x + B*(1-D))/(1-B);
102
    }
103

  
104
///////////////////////////////////////////////////////////////////////////////////////////////////
105

  
106
  private float g(float R, float D, float x, float cosAlpha)
107
    {
108
    float d = x-D;
109
    return (float)(Math.sqrt(R*R-d*d)-R*cosAlpha);
110
    }
111

  
112
///////////////////////////////////////////////////////////////////////////////////////////////////
113

  
114
  private float h(float R, float sinAlpha, float x)
115
    {
116
    return R*(sinAlpha-(float)Math.sin(x));
117
    }
118

  
119
///////////////////////////////////////////////////////////////////////////////////////////////////
120

  
121
  private float[] computeBands(float H, int alpha, float dist, float K, int N)
122
    {
123
    float[] bands = new float[2*N];
124

  
125
    bands[0] = 1.0f;
126
    bands[1] = 0.0f;
127

  
128
    float beta = (float)Math.atan(dist*Math.tan(Math.PI*alpha/180));
129
    float sinBeta = (float)Math.sin(beta);
130
    float cosBeta = (float)Math.cos(beta);
131
    float R = cosBeta<1.0f ? H/(1.0f-cosBeta) : 0.0f;
132
    float D = R*sinBeta;
133
    float B = h(R,sinBeta,K*beta);
134

  
135
    if( D>1.0f )
136
      {
137
      for(int i=1; i<N; i++)
138
        {
139
        bands[2*i  ] = (float)(N-1-i)/(N-1);
140
        bands[2*i+1] = H*(1-bands[2*i]);
141
        }
142
      }
143
    else
144
      {
145
      int K2 = (int)((N-3)*K);
146
      int K1 = (N-3)-K2;
147

  
148
      for(int i=0; i<=K1; i++)
149
        {
150
        float angle = K*beta + (1-K)*beta*(K1-i)/(K1+1);
151
        float x = h(R,sinBeta,angle);
152
        bands[2*i+2] = 1.0f - x;
153
        bands[2*i+3] = g(R,D,x,cosBeta);
154
        }
155

  
156
      for(int i=0; i<=K2; i++)
157
        {
158
        float x = (1-B)*(i+1)/(K2+1) + B;
159
        bands[2*K1+2 + 2*i+2] = 1.0f - x;
160
        bands[2*K1+2 + 2*i+3] = g(R,D,f(D,B,x),cosBeta);
161
        }
162
      }
163

  
164
    bands[2*N-2] = 0.0f;
165
    bands[2*N-1] =    H;
166

  
167
    return bands;
168
    }
169

  
62 170
///////////////////////////////////////////////////////////////////////////////////////////////////
63 171

  
64 172
  private void roundCorners(MeshBase mesh, Static3D center, Static3D[] vertices, float strength, float regionRadius)
......
82 190

  
83 191
///////////////////////////////////////////////////////////////////////////////////////////////////
84 192

  
85
  MeshBase createFacesCube(int index)
193
  MeshBase createFacesCube(int sizeIndex)
86 194
    {
87
    final int MESHES=6;
88
    MeshBase[] meshes = new MeshPolygon[MESHES];
89
    int association = 1;
195
    MeshBase[] meshes = new MeshPolygon[6];
90 196

  
91
    float[] bands;
92
    float D = 0.027f;
93
    float E = 0.5f-D;
94
    float[] vertices = { -E,-E, +E,-E, +E,+E, -E,+E };
95
    int extraI, extraV;
197
    float E = 0.5f;
198
    int extraI, extraV, num;
96 199

  
97
    switch(index)
200
    switch(sizeIndex)
98 201
      {
99
      case 0 : bands = new float[] { 1.0f    ,-D,
100
                                     1.0f-D/2,-D*0.55f,
101
                                     1.0f-D  ,-D*0.25f,
102
                                     1.0f-2*D, 0.0f,
103
                                     0.50f   , 0.040f,
104
                                     0.0f    , 0.048f };
105
               extraI = 2;
106
               extraV = 2;
107
               break;
108
      case 1 : bands = new float[] { 1.0f       ,-D,
109
                                     1.0f-D*1.2f,-D*0.55f,
110
                                     1.0f-2*D   , 0.0f,
111
                                     0.50f      , 0.040f,
112
                                     0.0f       , 0.048f };
113
               extraI = 2;
114
               extraV = 2;
115
               break;
116
      case 2 : bands = new float[] { 1.0f       ,-D,
117
                                     1.0f-D*1.2f,-D*0.55f,
118
                                     1.0f-2*D   , 0.0f,
119
                                     0.50f      , 0.040f,
120
                                     0.0f       , 0.048f };
121
               extraI = 1;
122
               extraV = 2;
123
               break;
124
      default: bands = new float[] { 1.0f    ,-D,
125
                                     1.0f-2*D, 0.0f,
126
                                     0.50f   , 0.025f,
127
                                     0.0f    , 0.030f };
128
               extraI = 1;
129
               extraV = 1;
130
               break;
202
      case 0 : num = 6; extraI = 2; extraV = 2; break;
203
      case 1 : num = 5; extraI = 2; extraV = 2; break;
204
      case 2 : num = 5; extraI = 1; extraV = 2; break;
205
      default: num = 4; extraI = 1; extraV = 1; break;
131 206
      }
132 207

  
133
    meshes[0] = new MeshPolygon(vertices,bands,extraI,extraV);
134
    meshes[0].setEffectAssociation(0,association,0);
208
    float[] vertices = { -E,-E, +E,-E, +E,+E, -E,+E };
209
    float[] bands = computeBands(0.048f,35,E,0.7f,num);
135 210

  
136
    for(int i=1; i<MESHES; i++)
137
      {
138
      association <<=1;
139
      meshes[i] = meshes[0].copy(true);
140
      meshes[i].setEffectAssociation(0,association,0);
141
      }
211
    meshes[0] = new MeshPolygon(vertices,bands,extraI,extraV);
212
    meshes[0].setEffectAssociation(0,1,0);
213
    meshes[1] = meshes[0].copy(true);
214
    meshes[1].setEffectAssociation(0,2,0);
215
    meshes[2] = meshes[0].copy(true);
216
    meshes[2].setEffectAssociation(0,4,0);
217
    meshes[3] = meshes[0].copy(true);
218
    meshes[3].setEffectAssociation(0,8,0);
219
    meshes[4] = meshes[0].copy(true);
220
    meshes[4].setEffectAssociation(0,16,0);
221
    meshes[5] = meshes[0].copy(true);
222
    meshes[5].setEffectAssociation(0,32,0);
142 223

  
143 224
    return new MeshJoined(meshes);
144 225
    }
......
147 228

  
148 229
  MeshBase createFacesSkewbCorner()
149 230
    {
150
    float D = 0.02f;
231
    MeshBase[] meshes = new MeshBase[6];
232

  
151 233
    float E = 0.5f;
152 234
    float F = SQ2/2;
153

  
154 235
    float[] vertices0 = { -E+E/4,E/4, E/4,-E+E/4, E/4,E/4};
155

  
156
    float[] bands0 = { 1.0f    , 0,
157
                       1.0f-2*D, D*0.25f,
158
                       1.0f-4*D, D*0.35f,
159
                       1.0f-8*D, D*0.6f,
160
                       0.60f   , D*1.0f,
161
                       0.30f   , D*1.375f,
162
                       0.0f    , D*1.4f };
163

  
164
    MeshBase[] meshes = new MeshBase[6];
236
    float[] bands0 = computeBands(0.028f,35,E/3,0.7f,7);
165 237

  
166 238
    meshes[0] = new MeshPolygon(vertices0, bands0, 3, 3);
167 239
    meshes[0].setEffectAssociation(0,1,0);
......
171 243
    meshes[2].setEffectAssociation(0,4,0);
172 244

  
173 245
    float[] vertices1 = { 0,0, F,0, F/2,(SQ3/2)*F };
174
    float[] bands1 = { 1.0f, 0.0f, 0.5f, 0.0f, 0.0f, 0.0f };
246
    float[] bands1 = computeBands(0,0,1,0,3);
175 247

  
176 248
    meshes[3] = new MeshPolygon(vertices1,bands1,1,5);
177 249
    meshes[3].setEffectAssociation(0,8,0);
......
187 259

  
188 260
  MeshBase createFacesSkewbFace()
189 261
    {
190
    float D = 0.03f;
262
    MeshBase[] meshes = new MeshBase[5];
263

  
191 264
    float E = SQ2/4;
192 265
    float[] vertices0 = { -E,-E, +E,-E, +E,+E, -E,+E };
266
    float[] bands0 = computeBands(0.051f,35,E/2,0.9f,7);
193 267

  
194
    float[] bands0 = { 1.0f    , 0,
195
                       1.0f-D/2, D*0.30f,
196
                       1.0f- D , D*0.50f,
197
                       1.0f-2*D, D*0.80f,
198
                       0.60f   , D*1.40f,
199
                       0.30f   , D*1.60f,
200
                       0.0f    , D*1.70f };
201

  
202
    MeshBase[] meshes = new MeshBase[5];
203 268
    meshes[0] = new MeshPolygon(vertices0, bands0, 3, 3);
204 269
    meshes[0].setEffectAssociation(0,1,0);
205 270

  
206 271
    float[] vertices1 = { -E,-SQ3*E, +E,-SQ3*E, 0,0 };
207
    float[] bands1 = { 1.0f, 0.0f, 0.5f, 0.0f, 0.0f, 0.0f };
272
    float[] bands1 = computeBands(0,0,1,0,3);
208 273

  
209 274
    meshes[1] = new MeshPolygon(vertices1,bands1,0,0);
210 275
    meshes[1].setEffectAssociation(0,2,0);
......
222 287

  
223 288
  MeshBase createFacesOcta()
224 289
    {
225
    int association = 1;
290
    MeshBase[] meshes = new MeshPolygon[8];
226 291

  
227
    float C = 0.06f;
228
    float D = 0.031f;
229 292
    float E = SQ3/2;
230 293
    float F = 0.5f;
231

  
232 294
    float[] vertices = { -F,-E/3, +F,-E/3, 0.0f,2*E/3};
295
    float[] bands = computeBands(0.05f,35,F,0.8f,6);
233 296

  
234
    float[] bands = new float[] { 1.0f    , 0,
235
                                  1.0f  -C, D*0.55f,
236
                                  1.0f-2*C, D*0.85f,
237
                                  1.0f-4*C, D*1.20f,
238
                                  0.5f    , D*1.40f,
239
                                  0.0f    , D*1.50f };
240

  
241
    MeshBase[] meshes = new MeshPolygon[8];
242 297
    meshes[0] = new MeshPolygon(vertices, bands, 2,2);
243
    meshes[0].setEffectAssociation(0,association,0);
244

  
245
    for(int i=1; i<8; i++)
246
      {
247
      association <<= 1;
248
      meshes[i] = meshes[0].copy(true);
249
      meshes[i].setEffectAssociation(0,association,0);
250
      }
298
    meshes[0].setEffectAssociation(0,1,0);
299
    meshes[1] = meshes[0].copy(true);
300
    meshes[1].setEffectAssociation(0,2,0);
301
    meshes[2] = meshes[0].copy(true);
302
    meshes[2].setEffectAssociation(0,4,0);
303
    meshes[3] = meshes[0].copy(true);
304
    meshes[3].setEffectAssociation(0,8,0);
305
    meshes[4] = meshes[0].copy(true);
306
    meshes[4].setEffectAssociation(0,16,0);
307
    meshes[5] = meshes[0].copy(true);
308
    meshes[5].setEffectAssociation(0,32,0);
309
    meshes[6] = meshes[0].copy(true);
310
    meshes[6].setEffectAssociation(0,64,0);
311
    meshes[7] = meshes[0].copy(true);
312
    meshes[7].setEffectAssociation(0,128,0);
251 313

  
252 314
    return new MeshJoined(meshes);
253 315
    }
......
257 319
  MeshBase createFacesTetra()
258 320
    {
259 321
    MeshBase[] meshes = new MeshBase[4];
260
    int association = 1;
261 322

  
262
    float C = 0.06f;
263
    float D = 0.035f;
264 323
    float E = SQ3/2;
265 324
    float F = 0.5f;
266

  
267 325
    float[] vertices = { -F,-E/3, +F,-E/3, 0.0f,2*E/3};
268

  
269
    float[] bands = new float[] { 1.0f    , 0,
270
                                  1.0f  -C, D*0.50f,
271
                                  1.0f-2*C, D*0.80f,
272
                                  1.0f-4*C, D*1.10f,
273
                                  0.5f    , D*1.30f,
274
                                  0.0f    , D*1.35f };
326
    float[] bands = computeBands(0.05f,35,F,0.8f,6);
275 327

  
276 328
    meshes[0] = new MeshPolygon(vertices, bands, 2,2);
277
    meshes[0].setEffectAssociation(0,association,0);
278

  
279
    for(int i=1; i<4; i++)
280
      {
281
      association <<= 1;
282
      meshes[i] = meshes[0].copy(true);
283
      meshes[i].setEffectAssociation(0,association,0);
284
      }
329
    meshes[0].setEffectAssociation(0,1,0);
330
    meshes[1] = meshes[0].copy(true);
331
    meshes[1].setEffectAssociation(0,2,0);
332
    meshes[2] = meshes[0].copy(true);
333
    meshes[2].setEffectAssociation(0,4,0);
334
    meshes[3] = meshes[0].copy(true);
335
    meshes[3].setEffectAssociation(0,8,0);
285 336

  
286 337
    return new MeshJoined(meshes);
287 338
    }
......
290 341

  
291 342
  MeshBase createFacesDino()
292 343
    {
293
    final int MESHES=4;
344
    MeshBase[] meshes = new MeshPolygon[4];
294 345

  
295
    float D = 0.02f;
296 346
    float E = 0.5f*SQ2;
297 347
    float F = 0.5f;
298

  
299
    float[] bands0 = { 1.0f    , 0,
300
                       1.0f-2*D, D*0.25f,
301
                       1.0f-4*D, D*0.35f,
302
                       1.0f-8*D, D*0.6f,
303
                       0.60f   , D*1.0f,
304
                       0.30f   , D*1.375f,
305
                       0.0f    , D*1.4f };
306

  
307 348
    float[] vertices0 = { -F,F/3, 0,-2*F/3, +F,F/3 };
349
    float[] bands0 = computeBands(0.028f,30,F/3,0.8f,7);
308 350

  
309
    MeshBase[] meshes = new MeshPolygon[MESHES];
310 351
    meshes[0] = new MeshPolygon(vertices0, bands0, 2, 5);
311 352
    meshes[0].setEffectAssociation(0,1,0);
312 353
    meshes[1] = meshes[0].copy(true);
313 354
    meshes[1].setEffectAssociation(0,2,0);
314 355

  
315
    float[] bands1 = { 1.0f    , 0,
316
                       0.50f   , 0.10f,
317
                       0.0f    , 0.20f };
318

  
319 356
    float[] vertices1 = { -E/2,-E*(SQ3/6), E/2,-E*(SQ3/6), 0,E*(SQ3/3) };
357
    float[] bands1 = computeBands(0.02f,45,F/3,0.2f,3);
320 358

  
321 359
    meshes[2] = new MeshPolygon(vertices1, bands1, 1, 2);
322 360
    meshes[2].setEffectAssociation(0,4,0);
......
330 368

  
331 369
  MeshBase createFacesHelicopterCorner()
332 370
    {
333
    float D = 0.02f;
371
    MeshBase[] meshes = new MeshBase[6];
372

  
334 373
    float E = 0.5f;
335 374
    float F = SQ2/4;
336

  
375
    float G = 1.0f/12;
337 376
    float[] vertices0 = { -E+E/4,E/4, E/4,-E+E/4, E/4,E/4};
338

  
339
    float[] bands0 = { 1.0f    , 0,
340
                       1.0f-2*D, D*0.25f,
341
                       1.0f-4*D, D*0.35f,
342
                       1.0f-8*D, D*0.6f,
343
                       0.60f   , D*1.0f,
344
                       0.30f   , D*1.375f,
345
                       0.0f    , D*1.4f };
346

  
347
    MeshBase[] meshes = new MeshBase[6];
377
    float[] bands0 = computeBands(0.028f,35,E/4,0.7f,7);
348 378

  
349 379
    meshes[0] = new MeshPolygon(vertices0, bands0, 3, 3);
350 380
    meshes[0].setEffectAssociation(0,1,0);
......
353 383
    meshes[2] = meshes[0].copy(true);
354 384
    meshes[2].setEffectAssociation(0,4,0);
355 385

  
356
    float[] vertices1 = { -F,-1.0f/12, +F,-1.0f/12, 0,1.0f/6 };
357
    float[] bands1 = { 1.0f, 0.0f, 0.5f, 0.0f, 0.0f, 0.0f };
358

  
386
    float[] vertices1 = { -F,-G, 0,-G, +F,-G, 0,2*G };
387
    float[] bands1 = computeBands(0.00f,0,0,0.0f,3);
359 388
    meshes[3] = new MeshPolygon(vertices1,bands1,1,5);
360 389
    meshes[3].setEffectAssociation(0,8,0);
361 390
    meshes[4] = meshes[3].copy(true);
......
372 401
    {
373 402
    MeshBase[] meshes = new MeshBase[4];
374 403

  
375
    float D = 0.02f;
376 404
    float E = 0.5f;
377 405
    float F = SQ2/4;
378 406
    float G = 1.0f/12;
379

  
380 407
    float[] vertices0 = { -E+E/4,E/4, E/4,-E+E/4, E/4,E/4};
381

  
382
    float[] bands0 = { 1.0f    , 0,
383
                       1.0f-2*D, D*0.25f,
384
                       1.0f-4*D, D*0.35f,
385
                       1.0f-8*D, D*0.6f,
386
                       0.60f   , D*1.0f,
387
                       0.30f   , D*1.375f,
388
                       0.0f    , D*1.4f };
408
    float[] bands0 = computeBands(0.028f,35,E/4,0.7f,7);
389 409

  
390 410
    meshes[0] = new MeshPolygon(vertices0, bands0, 3, 3);
391 411
    meshes[0].setEffectAssociation(0,1,0);
392 412

  
393 413
    float[] vertices1 = { -F,-G, +F,-G, 0,2*G};
394

  
395
    float[] bands1 = { 1.0f   , 0.0f,
396
                       0.5f   , 0.01f,
397
                       0.0f   , 0.01f };
414
    float[] bands1 = computeBands(0.01f,45,F,0.0f,3);
398 415

  
399 416
    meshes[1] = new MeshPolygon(vertices1, bands1, 1, 3);
400 417
    meshes[1].setEffectAssociation(0,2,0);
401 418

  
402 419
    float[] vertices2 = { -E/2,-F/3, +E/2,-F/3, 0,2*F/3};
403 420

  
404
    float[] bands2 = { 1.0f   , 0.0f,
405
                       0.5f   , 0.01f,
406
                       0.0f   , 0.01f };
407

  
408
    meshes[2] = new MeshPolygon(vertices2, bands2, 1, 3);
421
    meshes[2] = new MeshPolygon(vertices2, bands1, 1, 3);
409 422
    meshes[2].setEffectAssociation(0,4,0);
410 423
    meshes[3] = meshes[2].copy(true);
411 424
    meshes[3].setEffectAssociation(0,8,0);
......
417 430

  
418 431
  MeshBase createFacesRediEdge()
419 432
    {
420
    final int MESHES=6;
433
    MeshBase[] meshes = new MeshPolygon[6];
421 434

  
422
    float C = 0.02f;
423
    float D = 0.02f;
424 435
    float F = 0.25f;
425

  
426
    float[] bands0 = { 1.0f    , 0,
427
                       1.0f-2*C, D*0.25f,
428
                       1.0f-4*C, D*0.35f,
429
                       1.0f-8*C, D*0.6f,
430
                       0.60f   , D*1.0f,
431
                       0.30f   , D*1.375f,
432
                       0.0f    , D*1.4f };
433

  
434 436
    float[] vertices0 = { -F,+F, -F,-F, 0, -2*F, +F,-F, +F,+F };
437
    float[] bands0 = computeBands(0.038f,35,F,0.7f,7);
435 438

  
436
    MeshBase[] meshes = new MeshPolygon[MESHES];
437 439
    meshes[0] = new MeshPolygon(vertices0, bands0, 2, 2);
438 440
    meshes[0].setEffectAssociation(0,1,0);
439 441
    meshes[1] = meshes[0].copy(true);
440 442
    meshes[1].setEffectAssociation(0,2,0);
441 443

  
442
    float[] bands1 = { 1.0f    , 0,
443
                       0.90f   , D,
444
                       0.0f    , D };
445

  
444
    float[] bands1 = computeBands(0.02f,35,F/2,0.2f,3);
446 445
    float[] vertices1 = { -F/2, +F/2, -F/2, -1.5f*F, 1.5f*F, +F/2 };
447 446

  
448 447
    meshes[2] = new MeshPolygon(vertices1, bands1, 1, 2);
......
450 449
    meshes[3] = meshes[2].copy(true);
451 450
    meshes[3].setEffectAssociation(0,8,0);
452 451

  
453
    float[] bands2 = { 1.0f    , 0,
454
                       0.90f   , D,
455
                       0.0f    , D };
456

  
457 452
    float X = 0.25f*SQ2;
458 453
    float Y = SQ6/16;
459

  
460 454
    float[] vertices2 = { -X, Y, -1.5f*X, -Y, +1.5f*X, -Y, +X, Y };
461 455

  
462
    meshes[4] = new MeshPolygon(vertices2, bands2, 1, 1);
456
    meshes[4] = new MeshPolygon(vertices2, bands1, 1, 1);
463 457
    meshes[4].setEffectAssociation(0,16,0);
464 458
    meshes[5] = meshes[4].copy(true);
465 459
    meshes[5].setEffectAssociation(0,32,0);
......
471 465

  
472 466
  MeshBase createFacesRediCorner()
473 467
    {
474
    final int MESHES=6;
475
    MeshBase[] meshes = new MeshBase[MESHES];
468
    MeshBase[] meshes = new MeshBase[6];
476 469

  
477
    float C = 0.027f;
478
    float D = 0.027f;
479 470
    float E = 0.5f;
480
    float[] vertices1 = { -E,-E, +E,-E, +E,+E, -E,+E };
481

  
482
    float[] bands1 = new float[] { 1.0f   ,-D,
483
                                  1.0f-C/2,-D*0.55f,
484
                                  1.0f-C  ,-D*0.25f,
485
                                  1.0f-2*C, 0.0f,
486
                                  0.50f   , D*1.5f,
487
                                  0.0f    , D*1.75f };
471
    float[] vertices0 = { -E,-E, +E,-E, +E,+E, -E,+E };
472
    float[] bands0 = computeBands(0.06f,35,E,0.7f,6);
488 473

  
489
    meshes[0] = new MeshPolygon(vertices1,bands1,2,2);
474
    meshes[0] = new MeshPolygon(vertices0,bands0,2,2);
490 475
    meshes[0].setEffectAssociation(0,1,0);
491 476
    meshes[1] = meshes[0].copy(true);
492 477
    meshes[1].setEffectAssociation(0,2,0);
......
495 480

  
496 481
    float F = SQ2/2;
497 482
    float X = 0.5f;
483
    float G = 0.72f;
484
    float[] vertices1 = { -E,+F, -E+X,0, -E,-F, -E*G,-F, +E*G,-F, +E,-F, +E-X,0, +E,+F, +E*G,+F, -E*G,+F };
485
    float[] bands1 = computeBands(0.0f,0,1.0f,0.0f,2);
498 486

  
499
    float[] vertices2 = { -E,+F, -E+X,0, -E,-F, +E,-F, +E-X,0, +E,+F };
500

  
501
    float[] bands2 = new float[] { 1.0f,0.0f,
502
                                   0.0f,0.0f };
503

  
504
    meshes[3] = new MeshPolygon(vertices2,bands2,0,0);
487
    meshes[3] = new MeshPolygon(vertices1,bands1,0,0);
505 488
    meshes[3].setEffectAssociation(0,8,0);
506 489
    meshes[4] = meshes[3].copy(true);
507 490
    meshes[4].setEffectAssociation(0,16,0);
......
511 494
    return new MeshJoined(meshes);
512 495
    }
513 496

  
497
///////////////////////////////////////////////////////////////////////////////////////////////////
498
// EFFECTS
514 499
///////////////////////////////////////////////////////////////////////////////////////////////////
515 500

  
516 501
  VertexEffect[] createVertexEffectsCube()
......
694 679
    float F = 0.5f;
695 680
    final float ANGLE = (float)((180/Math.PI)*(Math.atan(SQ2)));
696 681

  
697
    Static1D angle1 = new Static1D(+ANGLE);
698
    Static1D angle2 = new Static1D(-ANGLE);
682
    Static1D angle1 = new Static1D(-ANGLE);
683
    Static1D angle2 = new Static1D(+ANGLE);
699 684
    Static3D axisX  = new Static3D(1,0,0);
700 685
    Static3D axisY  = new Static3D(0,1,0);
701 686
    Static3D axisZ  = new Static3D(0,-1,1);
......
1081 1066
    verticesType2[0] = new Static3D(-E, 0, 0);
1082 1067
    verticesType2[1] = new Static3D( 0,-E, 0);
1083 1068
    verticesType2[2] = new Static3D( 0, 0,-E);
1084
    roundCorners(mesh,roundingCenter,verticesType2,0.10f,0.20f);
1069
    roundCorners(mesh,roundingCenter,verticesType2,0.08f,0.20f);
1085 1070

  
1086 1071
    mesh.mergeEffComponents();
1087 1072

  
......
1106 1091
    Static3D[] verticesType2 = new Static3D[2];
1107 1092
    verticesType2[0] = new Static3D(-E+E/3, E/3  , 0);
1108 1093
    verticesType2[1] = new Static3D( E/3  ,-E+E/3, 0);
1109
    roundCorners(mesh,roundingCenter,verticesType2,0.10f,0.20f);
1094
    roundCorners(mesh,roundingCenter,verticesType2,0.08f,0.20f);
1110 1095

  
1111 1096
    mesh.mergeEffComponents();
1112 1097
    mesh.addEmptyTexComponent();
......
1125 1110
    for( VertexEffect effect : effects ) mesh.apply(effect);
1126 1111

  
1127 1112
    Static3D center = new Static3D(0.0f,-0.75f,-0.75f);
1128
    Static3D[] vertices = new Static3D[4];
1113
    Static3D[] vertices = new Static3D[2];
1129 1114
    vertices[0] = new Static3D( 0.5f, 0.0f, 0.0f);
1130 1115
    vertices[1] = new Static3D(-0.5f, 0.0f, 0.0f);
1131
    vertices[2] = new Static3D(0.0f, 0.0f,-1.5f);
1132
    vertices[3] = new Static3D(0.0f,-1.5f, 0.0f);
1133

  
1134 1116
    roundCorners(mesh,center,vertices,0.06f,0.20f);
1135 1117

  
1136 1118
    mesh.mergeEffComponents();
src/main/java/org/distorted/objects/TwistyCube.java
129 129
    {
130 130
    float F =  0.5f;
131 131
    float R = 0.10f;
132
    float S = 0.10f;
132
    float S = 0.08f;
133 133
    float[] vertices = { -F,-F, +F,-F, +F,+F, -F,+F};
134 134

  
135 135
    drawRoundedPolygon(canvas, paint, left, vertices, S, FACE_COLORS[face], R);
src/main/java/org/distorted/objects/TwistyDino.java
209 209
  void createFaceTexture(Canvas canvas, Paint paint, int face, int left)
210 210
    {
211 211
    float F = 0.5f;
212
    float R = 0.032f;
212
    float R = 0.025f;
213 213
    float S = 0.05f;
214 214
    float[] vertices = { -F,F/3, 0,-2*F/3, +F,F/3 };
215 215

  
src/main/java/org/distorted/objects/TwistyObject.java
69 69
  private static final float MAX_SIZE_CHANGE = 1.35f;
70 70
  private static final float MIN_SIZE_CHANGE = 0.8f;
71 71

  
72
  private static boolean mCreateFromDMesh = true;
72
  private static boolean mCreateFromDMesh = false;
73 73

  
74 74
  private static final Static3D CENTER = new Static3D(0,0,0);
75 75
  private static final int POST_ROTATION_MILLISEC = 500;

Also available in: Unified diff