139 |
139 |
|
140 |
140 |
float getScreenRatio()
|
141 |
141 |
{
|
142 |
|
return 1.0f;
|
|
142 |
return 0.5f;
|
143 |
143 |
}
|
144 |
144 |
|
145 |
145 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
... | ... | |
186 |
186 |
{
|
187 |
187 |
case 2: float[] c2 = new float[] {0.0f};
|
188 |
188 |
return new float[][] { c2,c2,c2,c2 };
|
189 |
|
case 3: float[] c3 = new float[] {-SQ3/12,+SQ3/12};
|
|
189 |
case 3: float[] c3 = new float[] {-SQ3/6,+SQ3/6};
|
190 |
190 |
return new float[][] { c3,c3,c3,c3 };
|
191 |
191 |
}
|
192 |
192 |
return null;
|
... | ... | |
203 |
203 |
|
204 |
204 |
float[][] getCubitPositions(int numLayers)
|
205 |
205 |
{
|
206 |
|
final float DIST_CORNER = (numLayers-1)*0.50f;
|
207 |
|
final float DIST_EDGE = (numLayers-1)*0.50f;
|
208 |
|
final float DIST_CENTER = (numLayers-1)*0.50f;
|
|
206 |
final float DIST_CORNER = numLayers-1;
|
|
207 |
final float DIST_EDGE = numLayers-1;
|
|
208 |
final float DIST_CENTER = numLayers-1;
|
209 |
209 |
|
210 |
210 |
final int numCorners = getNumCorners();
|
211 |
211 |
final int numEdges = getNumEdges(numLayers);
|
... | ... | |
246 |
246 |
|
247 |
247 |
for (float[] edges : edgeTable)
|
248 |
248 |
{
|
249 |
|
float c = (3-numLayers)*0.5f;
|
|
249 |
float c = 3-numLayers;
|
250 |
250 |
|
251 |
|
for (int j=0; j<numLayers-2; j++, c+=1.0f, index++)
|
|
251 |
for (int j=0; j<numLayers-2; j++, c+=2, index++)
|
252 |
252 |
{
|
253 |
253 |
CENTERS[index] = new float[] { edges[0]==0 ? c : edges[0] ,
|
254 |
254 |
edges[1]==0 ? c : edges[1] ,
|
... | ... | |
275 |
275 |
|
276 |
276 |
for( float[] centers : centerTable )
|
277 |
277 |
{
|
278 |
|
x = (2-numLayers)*0.5f;
|
|
278 |
x = 2-numLayers;
|
279 |
279 |
|
280 |
|
for(int i=0; i<numLayers-1; i++, x+=1.0f)
|
|
280 |
for(int i=0; i<numLayers-1; i++, x+=2)
|
281 |
281 |
{
|
282 |
|
y = (2-numLayers)*0.5f;
|
|
282 |
y = 2-numLayers;
|
283 |
283 |
|
284 |
|
for(int j=0; j<numLayers-1; j++, y+=1.0f, index++)
|
|
284 |
for(int j=0; j<numLayers-1; j++, y+=2, index++)
|
285 |
285 |
{
|
286 |
286 |
if( centers[0]==Y ) cen0 = y;
|
287 |
287 |
else if( centers[0]==X ) cen0 = x;
|
... | ... | |
299 |
299 |
}
|
300 |
300 |
}
|
301 |
301 |
|
302 |
|
x = (3-numLayers)*0.5f;
|
|
302 |
x = 3-numLayers;
|
303 |
303 |
|
304 |
|
for(int i=0; i<numLayers-2; i++, x+=1.0f)
|
|
304 |
for(int i=0; i<numLayers-2; i++, x+=2)
|
305 |
305 |
{
|
306 |
|
y = (3-numLayers)*0.5f;
|
|
306 |
y = 3-numLayers;
|
307 |
307 |
|
308 |
|
for(int j=0; j<numLayers-2; j++, y+=1.0f, index++)
|
|
308 |
for(int j=0; j<numLayers-2; j++, y+=2, index++)
|
309 |
309 |
{
|
310 |
310 |
if( centers[0]==Y ) cen0 = y;
|
311 |
311 |
else if( centers[0]==X ) cen0 = x;
|
... | ... | |
395 |
395 |
|
396 |
396 |
if( variant==0 )
|
397 |
397 |
{
|
398 |
|
double[][] vertices = new double[][] { {-0.5f, 0.0f, 0.0f},{ 0.0f,-0.5f, 0.0f},{ 0.0f, 0.0f,-0.5f},{-0.5f,-0.5f,-0.5f},{ 0.0f, 0.0f, 0.0f} };
|
|
398 |
double[][] vertices = new double[][] { {-1,0,0},{0,-1,0},{0,0,-1},{-1,-1,-1},{0,0,0} };
|
399 |
399 |
int[][] vert_indices = new int[][] { {0,1,4},{2,0,4},{1,2,4},{3,1,0},{3,2,1},{3,0,2} };
|
400 |
400 |
int N = numLayers==2 ? 7:5;
|
401 |
401 |
int E1= numLayers==2 ? 3:2;
|
402 |
402 |
int E2= numLayers==2 ? 5:3;
|
403 |
|
float[][] bands = new float[][] { {0.028f,35,0.16f,0.7f,N,E1,E1}, {0.000f, 0,1.00f,0.0f,3,1,E2} };
|
|
403 |
float[][] bands = new float[][] { {0.020f,35,0.16f,0.7f,N,E1,E1}, {0.000f, 0,1.00f,0.0f,3,1,E2} };
|
404 |
404 |
int[] bandIndices = new int[] { 0,0,0,1,1,1 };
|
405 |
|
float[][] corners = new float[][] { {0.08f,0.15f}, {0.08f,0.20f} };
|
|
405 |
float[][] corners = new float[][] { {0.05f,0.25f}, {0.05f,0.20f} };
|
406 |
406 |
int[] cornerIndices = new int[] { 1,1,1,0,0 };
|
407 |
|
float[][] centers = new float[][] { {-0.25f, -0.25f, -0.25f} };
|
|
407 |
float[][] centers = new float[][] { {-0.5f, -0.5f, -0.5f} };
|
408 |
408 |
int[] centerIndices = new int[] { 0,0,0,-1,0 };
|
409 |
409 |
return new ObjectShape(vertices,vert_indices,bands,bandIndices,corners,cornerIndices,centers,centerIndices,getNumCubitFaces(), null);
|
410 |
410 |
}
|
411 |
411 |
else if( variant==1 )
|
412 |
412 |
{
|
413 |
|
double[][] vertices = new double[][] { {-0.5, 0.0, 0.0},{ 0.5, 0.0, 0.0},{ 0.0,-0.5, 0.0},{ 0.0, 0.0,-0.5} };
|
|
413 |
double[][] vertices = new double[][] { {-1,0,0},{1,0,0},{0,-1,0},{0,0,-1} };
|
414 |
414 |
int[][] vert_indices = new int[][] { {2,1,0},{3,0,1},{2,3,1},{3,2,0} };
|
415 |
415 |
int N = numLayers==2 ? 7:5;
|
416 |
416 |
int E = numLayers==2 ? 5:2;
|
... | ... | |
418 |
418 |
int[] bandIndices = new int[] { 0,0,1,1 };
|
419 |
419 |
float[][] corners = new float[][] { {0.07f,0.20f}, {0.02f,0.30f} };
|
420 |
420 |
int[] cornerIndices = new int[] { 0,0,1,1 };
|
421 |
|
float[][] centers = new float[][] { {0.0f, -0.25f, -0.25f} };
|
|
421 |
float[][] centers = new float[][] { {0.0f, -0.5f, -0.5f} };
|
422 |
422 |
int[] centerIndices = new int[] { 0,0,0,0 };
|
423 |
423 |
return new ObjectShape(vertices,vert_indices,bands,bandIndices,corners,cornerIndices,centers,centerIndices,getNumCubitFaces(), null);
|
424 |
424 |
}
|
425 |
425 |
else
|
426 |
426 |
{
|
427 |
|
double[][] vertices = new double[][] { {-0.5f, 0.0f, 0.0f },{ 0.0f,-0.5f, 0.0f },{ 0.5f, 0.0f, 0.0f },{ 0.0f, 0.5f, 0.0f },{ 0.0f, 0.0f,-0.5f } };
|
|
427 |
double[][] vertices = new double[][] { {-1,0,0},{0,-1,0},{1,0,0},{0,1,0},{0,0,-1} };
|
428 |
428 |
int[][] vert_indices = new int[][] { {0,1,2,3},{4,1,0},{4,2,1},{4,3,2},{4,0,3} };
|
429 |
429 |
int N = numLayers==2 ? 7:6;
|
430 |
430 |
int E = numLayers==2 ? 3:1;
|
431 |
|
float[][] bands = new float[][] { {0.051f,35,SQ2/8,0.9f,N,E,E}, {0.000f,0,1,0.0f,3,0,0} };
|
|
431 |
float[][] bands = new float[][] { {0.04f,35,SQ2/8,0.9f,N,E,E}, {0.000f,0,1,0.0f,3,0,0} };
|
432 |
432 |
int[] bandIndices = new int[] { 0,1,1,1,1 };
|
433 |
|
float[][] corners = new float[][] { {0.06f,0.10f} };
|
|
433 |
float[][] corners = new float[][] { {0.06f,0.15f} };
|
434 |
434 |
int[] cornerIndices = new int[] { 0,0,0,0,0 };
|
435 |
|
float[][] centers = new float[][] { {0,0,-0.2f} };
|
|
435 |
float[][] centers = new float[][] { {0,0,-0.4f} };
|
436 |
436 |
int[] centerIndices = new int[] { 0,0,0,0,-1 };
|
437 |
437 |
return new ObjectShape(vertices,vert_indices,bands,bandIndices,corners,cornerIndices,centers,centerIndices,getNumCubitFaces(), null);
|
438 |
438 |
}
|
Make the Skewbs standard size (cube size=2,3, i.e. equal to numLayers so that DIST2D and DIST3D are standard)