| 52 |
52 |
};
|
| 53 |
53 |
|
| 54 |
54 |
private static final int NUM_STICKERS = 2;
|
| 55 |
|
public static final float IVY_D = 0.003f;
|
|
55 |
public static final float IVY_D = 0.006f;
|
| 56 |
56 |
private static final int IVY_N = 8;
|
| 57 |
57 |
private static final int FACES_PER_CUBIT =6;
|
| 58 |
58 |
|
| ... | ... | |
| 129 |
129 |
|
| 130 |
130 |
float getScreenRatio()
|
| 131 |
131 |
{
|
| 132 |
|
return 1.0f;
|
|
132 |
return 0.5f;
|
| 133 |
133 |
}
|
| 134 |
134 |
|
| 135 |
135 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
| ... | ... | |
| 187 |
187 |
|
| 188 |
188 |
float[][] getCubitPositions(int numLayers)
|
| 189 |
189 |
{
|
| 190 |
|
final float DIST_CORNER = (numLayers-1)*0.50f;
|
| 191 |
|
final float DIST_CENTER = (numLayers-1)*0.50f;
|
|
190 |
final float DIST_CORNER = numLayers-1;
|
|
191 |
final float DIST_CENTER = numLayers-1;
|
| 192 |
192 |
|
| 193 |
193 |
final float[][] CENTERS = new float[10][];
|
| 194 |
194 |
|
| ... | ... | |
| 217 |
217 |
final float angle = (float)Math.PI/(2*IVY_N);
|
| 218 |
218 |
final float CORR = 1.0f - 2*IVY_D;
|
| 219 |
219 |
|
| 220 |
|
float[][] centers= new float[][] { {-0.5f,-0.5f,-0.5f} };
|
| 221 |
|
float[][] corners= new float[][] { {0.03f,0.10f}, {0.02f,0.10f} };
|
|
220 |
float[][] centers= new float[][] { {-1.0f,-1.0f,-1.0f} };
|
|
221 |
float[][] corners= new float[][] { {0.05f,0.20f}, {0.04f,0.20f} };
|
| 222 |
222 |
int[] cornerIndices= new int[3*(IVY_N+1)+4];
|
| 223 |
223 |
int[] centerIndices= new int[3*(IVY_N+1)+4];
|
| 224 |
224 |
double[][] vertices= new double[3*(IVY_N+1)+4][3];
|
| ... | ... | |
| 250 |
250 |
vertices[0][0] = 0.0;
|
| 251 |
251 |
vertices[0][1] = 0.0;
|
| 252 |
252 |
vertices[0][2] = 0.0;
|
| 253 |
|
vertices[1][0] =-1.0;
|
|
253 |
vertices[1][0] =-2.0;
|
| 254 |
254 |
vertices[1][1] = 0.0;
|
| 255 |
255 |
vertices[1][2] = 0.0;
|
| 256 |
256 |
vertices[2][0] = 0.0;
|
| 257 |
|
vertices[2][1] =-1.0;
|
|
257 |
vertices[2][1] =-2.0;
|
| 258 |
258 |
vertices[2][2] = 0.0;
|
| 259 |
259 |
vertices[3][0] = 0.0;
|
| 260 |
260 |
vertices[3][1] = 0.0;
|
| 261 |
|
vertices[3][2] =-1.0;
|
|
261 |
vertices[3][2] =-2.0;
|
| 262 |
262 |
|
| 263 |
263 |
vertIndices[0][0] = 2;
|
| 264 |
264 |
vertIndices[0][1] = 0;
|
| ... | ... | |
| 292 |
292 |
double cos2 = Math.cos(( i)*angle);
|
| 293 |
293 |
double sin2 = Math.sin(( i)*angle);
|
| 294 |
294 |
|
| 295 |
|
vertices[N1+i][0] = CORR*(cos1-0.5) - 0.5;
|
| 296 |
|
vertices[N1+i][1] = CORR*(sin1-0.5) - 0.5;
|
|
295 |
vertices[N1+i][0] = CORR*(2*cos1-1.0) - 1.0;
|
|
296 |
vertices[N1+i][1] = CORR*(2*sin1-1.0) - 1.0;
|
| 297 |
297 |
vertices[N1+i][2] = 0.0;
|
| 298 |
298 |
|
| 299 |
299 |
vertices[N2+i][0] = 0.0;
|
| 300 |
|
vertices[N2+i][1] = CORR*(sin2-0.5) - 0.5;
|
| 301 |
|
vertices[N2+i][2] = CORR*(cos2-0.5) - 0.5;
|
|
300 |
vertices[N2+i][1] = CORR*(2*sin2-1.0) - 1.0;
|
|
301 |
vertices[N2+i][2] = CORR*(2*cos2-1.0) - 1.0;
|
| 302 |
302 |
|
| 303 |
|
vertices[N3+i][0] = CORR*(cos2-0.5) - 0.5;
|
|
303 |
vertices[N3+i][0] = CORR*(2*cos2-1.0) - 1.0;
|
| 304 |
304 |
vertices[N3+i][1] = 0.0;
|
| 305 |
|
vertices[N3+i][2] = CORR*(sin2-0.5) - 0.5;
|
|
305 |
vertices[N3+i][2] = CORR*(2*sin2-1.0) - 1.0;
|
| 306 |
306 |
|
| 307 |
307 |
vertIndices[0][i+3] = N1 + i;
|
| 308 |
308 |
vertIndices[1][i+3] = N2 + i;
|
| ... | ... | |
| 312 |
312 |
vertIndices[5][i+3] = N3 + i;
|
| 313 |
313 |
}
|
| 314 |
314 |
|
| 315 |
|
float C = 0.5f - SQ2/4;
|
|
315 |
float C = 1.0f - SQ2/2;
|
| 316 |
316 |
float[] convexCenter = new float[] {-C,-C,-C};
|
| 317 |
317 |
return new ObjectShape(vertices,vertIndices,bands,bandIndices,corners,cornerIndices,centers,centerIndices,getNumCubitFaces(), convexCenter);
|
| 318 |
318 |
}
|
| ... | ... | |
| 325 |
325 |
|
| 326 |
326 |
int[] bandIndices= new int[] { 0,1 };
|
| 327 |
327 |
int[] indexes = new int[2*IVY_N];
|
| 328 |
|
float[][] corners= new float[][] { {0.03f,0.10f} };
|
| 329 |
|
float[][] centers= new float[][] { {-0.0f,-0.0f,-0.5f} };
|
|
328 |
float[][] corners= new float[][] { {0.05f,0.20f} };
|
|
329 |
float[][] centers= new float[][] { {-0.0f,-0.0f,-1.0f} };
|
| 330 |
330 |
|
| 331 |
331 |
for(int i=0; i<IVY_N; i++)
|
| 332 |
332 |
{
|
| 333 |
333 |
double sin = Math.sin(i*angle);
|
| 334 |
334 |
double cos = Math.cos(i*angle);
|
| 335 |
335 |
|
| 336 |
|
vertices[i ][0] = CORR*(0.5f-cos);
|
| 337 |
|
vertices[i ][1] = CORR*(0.5f-sin);
|
|
336 |
vertices[i ][0] = CORR*(1.0f-2*cos);
|
|
337 |
vertices[i ][1] = CORR*(1.0f-2*sin);
|
| 338 |
338 |
vertices[i ][2] = 0;
|
| 339 |
|
vertices[i+IVY_N][0] = CORR*(cos-0.5f);
|
| 340 |
|
vertices[i+IVY_N][1] = CORR*(sin-0.5f);
|
|
339 |
vertices[i+IVY_N][0] = CORR*(2*cos-1.0f);
|
|
340 |
vertices[i+IVY_N][1] = CORR*(2*sin-1.0f);
|
| 341 |
341 |
vertices[i+IVY_N][2] = 0;
|
| 342 |
342 |
}
|
| 343 |
343 |
|
Make Ivy standard size (cube size=2, i.e. equal to numLayers so that DIST2D and DIST3D are standard)