/* 85. Same as 63, but with four colors. 63. A Wall is divided into four horizontal parts. In the top row are four equal divisions, each with with lines in a different direction. In the second row, six double combinations; in the third row, four triple combinations; in the bottom row, all four combinations superimposed. Ported to p5.js by Casey Reas 11 July 2016 p5.js 0.5.2 Restored by Casey Reas <http://reas.com> 22 June 2016 Processing v.3.1.1 <http://processing.org> Implemented as software by Casey Reas March, 2004 Processing v.68 <http://processing.org> Colors adjusted for RGB (additive color model) */ function setup() { createCanvas(768, 768); noFill(); background(255); var x1 = 0; var x2 = width/4; var y1 = 0; var y2 = height/4; horizonal(x1, x2, y1, y2); x1 = x2; x2 = x2 + width/4; vertical(x1, x2, y1, y2); x1 = x2; x2 = x2 + width/4; leftDiagonal(x1, x2, y1, y2); x1 = x2; x2 = x2 + width/4; rightDiagonal(x1, x2, y1, y2); // Row two x1 = 0; x2 = width/6; y1 = height/4; y2 = y1 + height/4; horizonal(x1, x2, y1, y2); vertical(x1, x2, y1, y2); x1 = x2; x2 = width/3; horizonal(x1, x2, y1, y2); leftDiagonal(x1, x2, y1, y2); x1 = x2; x2 = width/2; horizonal(x1, x2, y1, y2); rightDiagonal(x1, x2, y1, y2); x1 = x2; x2 = width/2+width/6; vertical(x1, x2, y1, y2); leftDiagonal(x1, x2, y1, y2); x1 = x2; x2 = width/2+width/3; vertical(x1, x2, y1, y2); rightDiagonal(x1, x2, y1, y2); x1 = x2; x2 = width; leftDiagonal(x1, x2, y1, y2); rightDiagonal(x1, x2, y1, y2); // Row three x1 = 0; x2 = width/4; y1 = height/2; y2 = height - height/4; horizonal(x1, x2, y1, y2); leftDiagonal(x1, x2, y1, y2); vertical(x1, x2, y1, y2); x1 = x2; x2 = width/2; horizonal(x1, x2, y1, y2); rightDiagonal(x1, x2, y1, y2); vertical(x1, x2, y1, y2); x1 = x2; x2 = width/2+width/4; horizonal(x1, x2, y1, y2); leftDiagonal(x1, x2, y1, y2); rightDiagonal(x1, x2, y1, y2); x1 = x2; x2 = width; vertical(x1, x2, y1, y2); leftDiagonal(x1, x2, y1, y2); rightDiagonal(x1, x2, y1, y2); // Row four x1 = 0; x2 = width; y1 = height - height/4; y2 = height; horizonal(x1, x2, y1, y2); vertical(x1, x2, y1, y2); leftDiagonal(x1, x2, y1, y2); rightDiagonal(x1, x2, y1, y2); } function horizonal(x1, x2, y1, y2) { stroke(0); var increment = 4; for (i = y1; i <= y2; i += increment) { line(x1, i, x2, i); } } function vertical(x1, x2, y1, y2) { stroke(255, 0, 0); var increment = 4; stroke(0, 255, 0); for (i = x1; i <= x2; i += increment) { line(i, y1, i, y2); } } function leftDiagonal(x1, x2, y1, y2) { // This code is not general and only works for // square and horizontal display areas var increment = 6; stroke(0, 0, 255); var w = x2 - x1; var p = dist(0, 0, w, w); for(i = 0; i <= w; i += increment) { // Upper left corner if(i <= y2-y1) { line(x1, y1+i, x1+i, y1); } // Middle filler for vertical areas if(y2-y1 > x2-x1 && y2-i-w > y1) { //line(x1, y2-i, x2, y1+w-i); line(x1, y2-i, x2, y2-i-w); } // Middle filler for horizontal areas if(x2-x1 > y2-y1) { line(x1+i, y2, x1+i+y2-y1, y1); } // Lower right corner if(w-i < y2-y1) { line(x1+i, y2, x2, y2-(w-i)); } } } function rightDiagonal(x1, x2, y1, y2) { // This code is not general and only works for // square and horizontal display areas var increment = 6; stroke(255, 0, 0); var w = x2 - x1; for (i = 0; i <= w; i += increment) { // Upper right corner if(w-i < y2-y1) { line(x1+i, y1, x2, y1+(w-i)); } // Lower left corner if(y2-i >= y1) { line(x1, y2-i, x1+i, y2); } // Middle filler vertical if(y2-y1 > x2-x1 && y1+w+i < y2) { line(x1, y1+i, x2, y1+w+i); } // Middle filler horizontal if((x2-x1 > y2-y1) && (i <= w-(y2-y1))) { line(x1+i, y1, x1+i+y2-y1, y2); } } }