309 |
309 |
final float lenY = 0.5f*(Y-1);
|
310 |
310 |
final float lenZ = 0.5f*(Z-1);
|
311 |
311 |
|
312 |
|
if( X==1 || Y==1 || Z==1 )
|
|
312 |
int curPos = 0;
|
|
313 |
|
|
314 |
if( X==1 )
|
|
315 |
{
|
|
316 |
float[][] pos = new float[X*Y*Z][];
|
|
317 |
|
|
318 |
for(int y=0; y<Y; y++)
|
|
319 |
for(int z=0; z<Z; z++) pos[curPos++] = new float[] {+lenX,y-lenY,z-lenZ};
|
|
320 |
|
|
321 |
return pos;
|
|
322 |
}
|
|
323 |
|
|
324 |
if( Y==1 )
|
313 |
325 |
{
|
314 |
|
int numCubits = X*Y*Z;
|
315 |
|
float[][] tmp = new float[numCubits][];
|
|
326 |
float[][] pos = new float[X*Y*Z][];
|
|
327 |
|
|
328 |
for(int x=0; x<X; x++)
|
|
329 |
for(int z=0; z<Z; z++) pos[curPos++] = new float[] {x-lenX,+lenY,z-lenZ};
|
|
330 |
|
|
331 |
return pos;
|
|
332 |
}
|
|
333 |
|
|
334 |
if( Z==1 )
|
|
335 |
{
|
|
336 |
float[][] pos = new float[X*Y*Z][];
|
|
337 |
|
|
338 |
for(int x=0; x<X; x++)
|
|
339 |
for(int y=0; y<Y; y++) pos[curPos++] = new float[] {x-lenX,y-lenY,+lenZ};
|
316 |
340 |
|
317 |
|
// TODO ...
|
|
341 |
return pos;
|
318 |
342 |
}
|
319 |
343 |
|
320 |
344 |
int numCubits = X*Y*Z - (X-2)*(Y-2)*(Z-2);
|
321 |
|
float[][] tmp = new float[numCubits][];
|
322 |
|
|
323 |
|
int currentPosition = 0;
|
324 |
|
|
325 |
|
tmp[currentPosition++] = new float[] {-lenX,-lenY,-lenZ};
|
326 |
|
tmp[currentPosition++] = new float[] {-lenX,-lenY,+lenZ};
|
327 |
|
tmp[currentPosition++] = new float[] {-lenX,+lenY,-lenZ};
|
328 |
|
tmp[currentPosition++] = new float[] {-lenX,+lenY,+lenZ};
|
329 |
|
tmp[currentPosition++] = new float[] {+lenX,-lenY,-lenZ};
|
330 |
|
tmp[currentPosition++] = new float[] {+lenX,-lenY,+lenZ};
|
331 |
|
tmp[currentPosition++] = new float[] {+lenX,+lenY,-lenZ};
|
332 |
|
tmp[currentPosition++] = new float[] {+lenX,+lenY,+lenZ};
|
333 |
|
|
334 |
|
for(int i=1; i<X-1; i++)
|
335 |
|
tmp[currentPosition++] = new float[] { i-lenX, -lenY, -lenZ };
|
336 |
|
for(int i=1; i<X-1; i++)
|
337 |
|
tmp[currentPosition++] = new float[] { i-lenX, -lenY, +lenZ };
|
338 |
|
for(int i=1; i<X-1; i++)
|
339 |
|
tmp[currentPosition++] = new float[] { i-lenX, +lenY, -lenZ };
|
340 |
|
for(int i=1; i<X-1; i++)
|
341 |
|
tmp[currentPosition++] = new float[] { i-lenX, +lenY, +lenZ };
|
342 |
|
for(int i=1; i<Y-1; i++)
|
343 |
|
tmp[currentPosition++] = new float[] { -lenX, i-lenY, -lenZ };
|
344 |
|
for(int i=1; i<Y-1; i++)
|
345 |
|
tmp[currentPosition++] = new float[] { -lenX, i-lenY, +lenZ };
|
346 |
|
for(int i=1; i<Y-1; i++)
|
347 |
|
tmp[currentPosition++] = new float[] { +lenX, i-lenY, -lenZ };
|
348 |
|
for(int i=1; i<Y-1; i++)
|
349 |
|
tmp[currentPosition++] = new float[] { +lenX, i-lenY, +lenZ };
|
350 |
|
for(int i=1; i<Z-1; i++)
|
351 |
|
tmp[currentPosition++] = new float[] { -lenX, -lenY, i-lenZ };
|
352 |
|
for(int i=1; i<Z-1; i++)
|
353 |
|
tmp[currentPosition++] = new float[] { -lenX, +lenY, i-lenZ };
|
354 |
|
for(int i=1; i<Z-1; i++)
|
355 |
|
tmp[currentPosition++] = new float[] { +lenX, -lenY, i-lenZ };
|
356 |
|
for(int i=1; i<Z-1; i++)
|
357 |
|
tmp[currentPosition++] = new float[] { +lenX, +lenY, i-lenZ };
|
|
345 |
float[][] pos = new float[numCubits][];
|
|
346 |
|
|
347 |
pos[curPos++] = new float[] {-lenX,-lenY,-lenZ};
|
|
348 |
pos[curPos++] = new float[] {-lenX,-lenY,+lenZ};
|
|
349 |
pos[curPos++] = new float[] {-lenX,+lenY,-lenZ};
|
|
350 |
pos[curPos++] = new float[] {-lenX,+lenY,+lenZ};
|
|
351 |
pos[curPos++] = new float[] {+lenX,-lenY,-lenZ};
|
|
352 |
pos[curPos++] = new float[] {+lenX,-lenY,+lenZ};
|
|
353 |
pos[curPos++] = new float[] {+lenX,+lenY,-lenZ};
|
|
354 |
pos[curPos++] = new float[] {+lenX,+lenY,+lenZ};
|
|
355 |
|
|
356 |
for(int i=1; i<X-1; i++) pos[curPos++] = new float[] { i-lenX, -lenY, -lenZ };
|
|
357 |
for(int i=1; i<X-1; i++) pos[curPos++] = new float[] { i-lenX, -lenY, +lenZ };
|
|
358 |
for(int i=1; i<X-1; i++) pos[curPos++] = new float[] { i-lenX, +lenY, -lenZ };
|
|
359 |
for(int i=1; i<X-1; i++) pos[curPos++] = new float[] { i-lenX, +lenY, +lenZ };
|
|
360 |
for(int i=1; i<Y-1; i++) pos[curPos++] = new float[] { -lenX, i-lenY, -lenZ };
|
|
361 |
for(int i=1; i<Y-1; i++) pos[curPos++] = new float[] { -lenX, i-lenY, +lenZ };
|
|
362 |
for(int i=1; i<Y-1; i++) pos[curPos++] = new float[] { +lenX, i-lenY, -lenZ };
|
|
363 |
for(int i=1; i<Y-1; i++) pos[curPos++] = new float[] { +lenX, i-lenY, +lenZ };
|
|
364 |
for(int i=1; i<Z-1; i++) pos[curPos++] = new float[] { -lenX, -lenY, i-lenZ };
|
|
365 |
for(int i=1; i<Z-1; i++) pos[curPos++] = new float[] { -lenX, +lenY, i-lenZ };
|
|
366 |
for(int i=1; i<Z-1; i++) pos[curPos++] = new float[] { +lenX, -lenY, i-lenZ };
|
|
367 |
for(int i=1; i<Z-1; i++) pos[curPos++] = new float[] { +lenX, +lenY, i-lenZ };
|
358 |
368 |
|
359 |
369 |
for(int y=1; y<Y-1; y++)
|
360 |
|
for(int z=1; z<Z-1; z++)
|
361 |
|
tmp[currentPosition++] = new float[] {+lenX,y-lenY,z-lenZ};
|
|
370 |
for(int z=1; z<Z-1; z++) pos[curPos++] = new float[] {+lenX,y-lenY,z-lenZ};
|
362 |
371 |
|
363 |
372 |
for(int y=1; y<Y-1; y++)
|
364 |
|
for(int z=1; z<Z-1; z++)
|
365 |
|
tmp[currentPosition++] = new float[] {-lenX,y-lenY,z-lenZ};
|
|
373 |
for(int z=1; z<Z-1; z++) pos[curPos++] = new float[] {-lenX,y-lenY,z-lenZ};
|
366 |
374 |
|
367 |
375 |
for(int x=1; x<X-1; x++)
|
368 |
|
for(int z=1; z<Z-1; z++)
|
369 |
|
tmp[currentPosition++] = new float[] {x-lenX,+lenY,z-lenZ};
|
|
376 |
for(int z=1; z<Z-1; z++) pos[curPos++] = new float[] {x-lenX,+lenY,z-lenZ};
|
370 |
377 |
|
371 |
378 |
for(int x=1; x<X-1; x++)
|
372 |
|
for(int z=1; z<Z-1; z++)
|
373 |
|
tmp[currentPosition++] = new float[] {x-lenX,-lenY,z-lenZ};
|
|
379 |
for(int z=1; z<Z-1; z++) pos[curPos++] = new float[] {x-lenX,-lenY,z-lenZ};
|
374 |
380 |
|
375 |
381 |
for(int x=1; x<X-1; x++)
|
376 |
|
for(int y=1; y<Y-1; y++)
|
377 |
|
tmp[currentPosition++] = new float[] {x-lenX,y-lenY,+lenZ};
|
|
382 |
for(int y=1; y<Y-1; y++) pos[curPos++] = new float[] {x-lenX,y-lenY,+lenZ};
|
378 |
383 |
|
379 |
384 |
for(int x=1; x<X-1; x++)
|
380 |
|
for(int y=1; y<Y-1; y++)
|
381 |
|
tmp[currentPosition++] = new float[] {x-lenX,y-lenY,-lenZ};
|
|
385 |
for(int y=1; y<Y-1; y++) pos[curPos++] = new float[] {x-lenX,y-lenY,-lenZ};
|
382 |
386 |
|
383 |
|
return tmp;
|
|
387 |
return pos;
|
384 |
388 |
}
|
385 |
389 |
|
386 |
390 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
Improve cuboids: single-layer cuboids should work. 1x1x1 does!