// Square Painting 1 // July 20, 2019 -- John Clavin // Convoluted Code var seg_X; var seg_Y; var pointSpace_X; var pointSpace_Y; var orderArray_1 = []; var orderArray_2 = []; var orderArray_C = []; var arrayTruth = []; var pointsArray; var controlCounter; var numOfObjects = 1200; // 3 x 3 lines var numOfpPoints = 200; var restartFlag = false; function setup() { createCanvas(800, 800); frameRate(60); background(246); noStroke(); cTrans = 250; seg_X = width / 4; // 200 seg_Y = height / 4; pointSpace_X = width / 200; // 4 pointSpace_Y = width / 200; pointsArray_1 = [0, 200, 400]; pointsArray_2 = [600, 800, 1000]; initialize(); } function draw() { controlCounter++; painting.run(); if (controlCounter > 1800) { restartFlag = true; noLoop(); } } function mousePressed() { if (restartFlag === true) { if (isMouseOver() === true) { initialize(); restartFlag = false; loop(); } } return false; } function Painting() { this.paintObjects = []; this.colorArray = []; this.addObject = function(pos, oColor) { var p = new PaintObject(pos, oColor); this.paintObjects.push(p); } this.createColors = function() { this.colorArray[0] = color(random(140, 200), random(40, 100), random(40, 100)); this.colorArray[1] = color(random(40, 100), random(140, 200), random(40, 100)); this.colorArray[2] = color(random(40, 100), random(40, 100), random(140, 200)); this.colorArray[3] = color(random(140, 200), random(140, 200), random(40, 100)); this.colorArray[4] = color(random(40, 100), random(140, 200), random(140, 200)); this.colorArray[5] = color(random(140, 200), random(40, 100), random(140, 200)); } this.run = function() { let pointAdd; pointAdd = pointsArray_1[orderArray_1[0]]; if (controlCounter < 300) { for (let i = pointAdd; i < (numOfpPoints + pointAdd); i++) { this.paintObjects[i].update(); this.paintObjects[i].render(); } } pointAdd = pointsArray_2[orderArray_2[0]]; if (controlCounter > 300 && controlCounter < 600) { for (let i = pointAdd; i < (numOfpPoints + pointAdd); i++) { this.paintObjects[i].update(); this.paintObjects[i].render(); } } pointAdd = pointsArray_1[orderArray_1[1]]; if (controlCounter > 600 && controlCounter < 900) { for (let i = pointAdd; i < (numOfpPoints + pointAdd); i++) { this.paintObjects[i].update(); this.paintObjects[i].render(); } } pointAdd = pointsArray_2[orderArray_2[1]]; if (controlCounter > 900 && controlCounter < 1200) { for (let i = pointAdd; i < (numOfpPoints + pointAdd); i++) { this.paintObjects[i].update(); this.paintObjects[i].render(); } } pointAdd = pointsArray_1[orderArray_1[2]]; if (controlCounter > 1200 && controlCounter < 1500) { for (let i = pointAdd; i < (numOfpPoints + pointAdd); i++) { this.paintObjects[i].update(); this.paintObjects[i].render(); } } pointAdd = pointsArray_2[orderArray_2[2]]; if (controlCounter > 1500) { for (let i = pointAdd; i < (numOfpPoints + pointAdd); i++) { this.paintObjects[i].update(); this.paintObjects[i].render(); } } } } function PaintObject(pos, objectColor) { this.linePos = pos; this.objectColor = objectColor; this.movingPos = this.linePos; this.update = function() { var moveAmt = 2; this.x_decision = floor(random(3, 6)); if (this.x_decision == 3) { this.spreadto_x = -moveAmt; } else if (this.x_decision == 4) { this.spreadto_x = 0; } else { this.spreadto_x = moveAmt; } this.y_decision = floor(random(3, 6)); if (this.y_decision == 3) { this.spreadto_y = -moveAmt; } else if (this.y_decision == 4) { this.spreadto_y = 0; } else { this.spreadto_y = moveAmt; } this.spreadto_x += this.movingPos.x; this.spreadto_y += this.movingPos.y; this.movingPos.x = this.spreadto_x; this.movingPos.y = this.spreadto_y; } this.render = function() { var pointSize = 3; fill(this.objectColor); ellipse(this.movingPos.x, this.movingPos.y, pointSize, pointSize); } } function initialize() { background(230); controlCounter = 0; createOrderArrays(); painting = new Painting(); painting.createColors(); var point_X = 0; var point_Y = 0; var colorIndex; var oColor; for (let i = 0; i < numOfpPoints; i++) { point_Y = seg_Y; point_X = point_X + pointSpace_X; colorIndex = orderArray_C[0]; oColor = painting.colorArray[colorIndex]; painting.addObject(createVector(point_X, point_Y), oColor); } point_X = 0; for (let i = 0; i < numOfpPoints; i++) { point_Y = seg_Y * 2; point_X = point_X + pointSpace_X; colorIndex = orderArray_C[1]; oColor = painting.colorArray[colorIndex]; painting.addObject(createVector(point_X, point_Y), oColor); } point_X = 0; for (let i = 0; i < numOfpPoints; i++) { point_Y = seg_Y * 3; point_X = point_X + pointSpace_X; colorIndex = orderArray_C[2]; oColor = painting.colorArray[colorIndex]; painting.addObject(createVector(point_X, point_Y), oColor); } point_Y = 0; for (let i = 0; i < numOfpPoints; i++) { point_X = seg_X; point_Y = point_Y + pointSpace_Y; colorIndex = orderArray_C[3]; oColor = painting.colorArray[colorIndex]; painting.addObject(createVector(point_X, point_Y), oColor); } point_Y = 0; for (let i = 0; i < numOfpPoints; i++) { point_X = seg_X * 2; point_Y = point_Y + pointSpace_Y; colorIndex = orderArray_C[4]; oColor = painting.colorArray[colorIndex]; painting.addObject(createVector(point_X, point_Y), oColor); } point_Y = 0; for (let i = 0; i < numOfpPoints; i++) { point_X = seg_X * 3; point_Y = point_Y + pointSpace_Y; colorIndex = orderArray_C[5]; oColor = painting.colorArray[colorIndex]; painting.addObject(createVector(point_X, point_Y), oColor); } } function createOrderArrays() { arrayTruth = [true, true, true]; for (let i = 0; i < 3; i++) { let rn = randOrder(3); orderArray_1[i] = rn; } arrayTruth = [true, true, true]; for (let i = 0; i < 3; i++) { let rn = randOrder(3); orderArray_2[i] = rn; } arrayTruth = [true, true, true, true, true, true]; for (let i = 0; i < 6; i++) { let rn = randOrder(6); orderArray_C[i] = rn; } } function randOrder(amount) { this.amount = amount; let goodNumber; let notFound = true; while (notFound) { let candidate = floor(random(this.amount)); if (arrayTruth[candidate] == true) { goodNumber = candidate; arrayTruth[candidate] = false; notFound = false; } } return goodNumber; } function isMouseOver() { if ((mouseX < 0) || (mouseX > width) || (mouseY < 0) || (mouseY > height)) { return false; } else { return true; } }