float spin = 0.0; int sizeX = 5; int sizeY = 5; int sizeZ = 5; int wuerfel[][][] = new int[sizeX][sizeY][sizeZ]; //stores the size for each box int gridDistance = 40; void setup() { size(400, 400, P3D); mouseY=100; setupBoxes(); } void draw() { background(0); lights(); spin += 0.02; camera(width/2.0, height/2.0, 300.0, width/2.0, height/2.0, 0.0, 0.0, 1.0, 0.0); translate(width/2 , height/2 , 0); rotateX(PI/9 +spin/9.0); rotateY(PI/5 + spin); for (int i = 0; i < sizeX; i++) { for (int k = 0; k < sizeY; k++) { for (int l = 0; l < sizeZ; l++) { fill(200/sizeX *i +55, 200/sizeY *k +55, 200/sizeZ *l +55); //create a RGB-value according to the boxes position pushMatrix(); translate(-(sizeX-1)*gridDistance/2.0, -(sizeY-1)*gridDistance/2.0, -(sizeZ-1)*gridDistance/2.0); translate(gridDistance *i, gridDistance *k, gridDistance*l ); float center = wuerfel[i][k][l] /2.0; box(wuerfel[i][k][l]); popMatrix(); } } } if (mousePressed) setupBoxes(); } void setupBoxes() { float upperTreshold = gridDistance -5; for (int i = 0; i < sizeX; i++) { for (int k = 0; k < sizeY; k++) { for (int l = 0; l < sizeZ; l++) { wuerfel[i][k][l] = round( random(5, upperTreshold/ height *mouseY +5) ); //creates new random sizes } } } }