/* 358. A 12" (30 cm) grid covering the wall. Within each 12" (30 cm) square, one arc from the corner. (The direction of the arcs and their placement are determined by the draftsman.) (Inches must be translated into pixels) 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> */ var res = 50; // Resolution of grid var arcres = 48; // Resolution of the arc function setup() { createCanvas(800, 600); noFill(); stroke(255); background(0); for (var i = 0; i < height; i += res) { for (var j = 0; j < width; j += res) { var r = Math.floor(random(4)); if (r === 0) { arc_0(j, i, res); } else if (r === 1) { arc_1(j, i, res); } else if (r === 2) { arc_2(j, i, res); } else if (r === 3) { arc_3(j, i, res); } } } } function arc_0(xC, yC, r) { var x = 0, y = r, u = 1, v = 2 * r - 1, E = 0; while (x < y) { point(xC + y, yC - x + res); // ESE x++; E += u; u += 2; if (v < 2 * E){ y--; E -= v; v -= 2; } if (x > y) break; point(xC + x, yC - y + res); // SSE } } function arc_1(xC, yC, r) { var x = 0, y = r, u = 1, v = 2 * r - 1, E = 0; while (x < y) { point(xC + x, yC + y); // NNE x++; E += u; u += 2; if (v < 2 * E){ y--; E -= v; v -= 2; } if (x > y) break; point(xC + y, yC + x); // ENE } } function arc_2(xC, yC, r) { var x = 0, y = r, u = 1, v = 2 * r - 1, E = 0; while (x < y) { point(xC - y + res, yC + x); // WNW x++; E += u; u += 2; if (v < 2 * E){ y--; E -= v; v -= 2; } if (x > y) break; point(xC - x + res, yC + y); // NNW } } function arc_3(xC, yC, r) { var x = 0, y = r, u = 1, v = 2 * r - 1, E = 0; while (x < y) { point(xC - x + res, yC - y + res); // SSW x++; E += u; u += 2; if (v < 2 * E){ y--; E -= v; v -= 2; } if (x > y) break; point(xC - y + res, yC - x + res); // WSW } }