import processing.pdf.*; float sqSize = 10; float margin = 0; float dx; float dy; float xShift; float yShift; void setup() { dx = margin + sqSize; dy = -1 * ( margin + sqSize ); xShift = 24 * dx; yShift = -12 * dy; rectMode( CENTER ); size( 17 * 144, 11 * 144, PDF, "knmPosterNew.pdf" ); background( 255, 255, 255 ); fill( 0 ); noStroke(); noLoop(); } void draw() { drawText(); for (float i = 0; i < 13; i = i + 1 ) { translate( -xShift + 50, yShift * i + 100 ); for (float j = 0; j < 10; j = j + 1 ) { translate( xShift, 0 ); drawKNM( 0, i + j / 20 ); // bend, explode } // reset coordinates resetMatrix(); // change square size sqSize = sqSize - random( 1, 2 ); margin = margin + random( 1, 2 ); } exit(); } void drawText() { } void drawKNM( float bend, float explode ) { drawK( bend, explode ); translate( 6 * dx, 0 ); drawN( bend, explode ); translate( 6 * dx, 0 ); drawM( bend, explode ); translate( -12 * dx, 0 ); } void drawK( float bend, float explode ) { // lower half rect( 0, 0, sqSize, sqSize ); go( 2, true, bend, explode ); go( 2, true, bend, explode ); go( 6, true, bend, explode ); go( 6, true, bend, explode ); go( 9, true, bend, explode ); go( 9, true, bend, explode ); translate( -4 * dx, 4 * dy ); rect( 0, 0, sqSize, sqSize ); go( 8, true, bend, explode ); go( 8, false, bend, explode ); // no draw go( 6, false, bend, explode ); go( 6, false, bend, explode ); go( 3, true, bend, explode ); go( 3, true, bend, explode ); translate( -4 * dx, -4 * dy ); } void drawN( float bend, float explode ) { rect( 0, 0, sqSize, sqSize ); go( 2, true, bend, explode ); go( 2, true, bend, explode ); go( 2, true, bend, explode ); go( 2, true, bend, explode ); go( 9, true, bend, explode ); go( 9, true, bend, explode ); go( 9, true, bend, explode ); go( 9, true, bend, explode ); go( 2, true, bend, explode ); go( 2, true, bend, explode ); go( 2, true, bend, explode ); go( 2, true, bend, explode ); translate( -4 * dx, -4 * dy ); } void drawM( float bend, float explode ) { rect( 0, 0, sqSize, sqSize ); go( 2, true, bend, explode ); go( 2, true, bend, explode ); go( 2, true, bend, explode ); go( 2, true, bend, explode ); go( 9, true, bend, explode ); go( 9, true, bend, explode ); go( 3, true, bend, explode ); go( 3, true, bend, explode ); go( 8, true, bend, explode ); go( 8, true, bend, explode ); go( 8, true, bend, explode ); go( 8, true, bend, explode ); translate( -4 * dx, 0 ); } // 1 2 3 // 4 6 // 7 8 9 void go( int direction, boolean drawSq, float bend, float explode ) { rotate( random( -1 * bend, bend ) ); translate( random( -explode, explode ), random( -explode, explode ) ); switch( direction ) { case 1: translate( -1 * dx, dy ); break; case 2: translate( 0, dy ); break; case 3: translate( dx, dy ); break; case 4: translate( -1 * dx, 0 ); break; case 6: translate( dx, 0 ); break; case 7: translate( -1 * dx, -1 * dy ); break; case 8: translate( 0, -1 * dy ); break; case 9: translate( 1 * dx, -1 * dy ); break; } if (drawSq == true) { rect( 0, 0, sqSize, sqSize ); } }