// Mondrian 3D (mon3drian) automatic generator // (c) 2011 Bruno Bellamy - http://bellaminettes.com/goodies/mon3drian/ // Written with Processing - http://processing.org/ // As this program will obviously be extremely useful to all mankind, // I release it under the GPL :) // Maximum values int windowSize = 480; int boxNumMax = 65; int maxBoxSize = 100; int timerReset = 1000; int maxCol = 6; float minThickness = 0.6; float maxThickness = 8; // Boxes data tables float[] boxCenterX = new float[boxNumMax]; float[] boxCenterY = new float[boxNumMax]; float[] boxCenterZ = new float[boxNumMax]; float[] boxMinX = new float[boxNumMax]; float[] boxMaxX = new float[boxNumMax]; float[] boxMinY = new float[boxNumMax]; float[] boxMaxY = new float[boxNumMax]; float[] boxMinZ = new float[boxNumMax]; float[] boxMaxZ = new float[boxNumMax]; boolean[] x0Comp = new boolean[boxNumMax]; boolean[] x1Comp = new boolean[boxNumMax]; boolean[] y0Comp = new boolean[boxNumMax]; boolean[] y1Comp = new boolean[boxNumMax]; boolean[] z0Comp = new boolean[boxNumMax]; boolean[] z1Comp = new boolean[boxNumMax]; boolean[] boxComp = new boolean[boxNumMax]; float[] boxGrowStep = new float[boxNumMax]; int[] boxRed = new int[boxNumMax]; int[] boxGreen = new int[boxNumMax]; int[] boxBlue = new int[boxNumMax]; // Initialising some global values boolean move = true; boolean wire = false; boolean faceFill = true; boolean keep = false; boolean bevel = false; float rx,ry; float growStep = 4; float bevelSize = 0.5; int boxNum; int boxAlpha; int timer = 0; int boxCounter; // Colors palette int[] rCol = new int[maxCol]; int[] vCol = new int[maxCol]; int[] bCol = new int[maxCol]; void setup(){ size(640,640 ,P3D); rCol[0] = 0; vCol[0] = 0; bCol[0] = 0; // Black rCol[1] = 255; vCol[1] = 0; bCol[1] = 0; // Red rCol[2] = 255; vCol[2] = 255; bCol[2] = 0; // Yellow rCol[3] = 0; vCol[3] = 0; bCol[3] = 255; // Blue rCol[4] = 255; vCol[4] = 255; bCol[4] = 255; // White // Other white (so that white has twice as many // chances as other colors to appear) : rCol[5] = 255; vCol[5] = 255; bCol[5] = 255; createMon3drian(); } void draw(){ if(move){ int i=0; background(64,64,70); ambientLight(128,128,128); directionalLight(160,180,255,1,1,-1); camera(0.0, 0.0, 360.0, // eyeX, eyeY, eyeZ 0.0, 0.0, 0.0, // centerX, centerY, centerZ 0.0, 1.0, 0.0); // upX, upY, upZ pushMatrix(); rotateX(rx); rotateY(ry); if (wire) spaceDisplay(); for (i=0; i