xxxxxxxxxx
67
function setup() {
createCanvas(2100, 800);
noLoop(); // Draw once and stop
}
function draw() {
background(255);
noFill();
let gridSize = 14;
let squareSize = width / gridSize;
let colors = ['#D74C4C', '#FFC70C', '#32B5F1'];
for (let gridX = 0; gridX < gridSize; gridX++) {
for (let gridY = 0; gridY < gridSize; gridY++) {
let startX = gridX * squareSize;
let startY = gridY * squareSize;
let nol = int(random(2, 20));
for (let i = 0; i < nol; i++) {
let colorChoice = int(random(colors.length));
stroke(color(colors[colorChoice]));
drawHandDrawnCurve(startX, startY, squareSize);
}
}
}
}
function drawHandDrawnCurve(x, y, size) {
let startCoord = getRandomCoordCase();
let endCoord;
do {
endCoord = getRandomCoordCase();
} while (startCoord.case === endCoord.case);
let startX = x + startCoord.x * size;
let startY = y + startCoord.y * size;
let endX = x + endCoord.x * size;
let endY = y + endCoord.y * size;
beginShape();
for (let t = 0; t <= 1; t += 0.1) {
let noiseFactor = map(noise((t + 0.2) * 10), 0, 1, -4, 4);
let curveX = lerp(startX, endX, t) + noiseFactor;
let curveY = lerp(startY, endY, t) + noiseFactor;
vertex(curveX, curveY);
}
endShape();
}
function getRandomCoordCase() {
let rand = int(random(4));
switch (rand) {
case 0:
return { x: 0, y: random(), case: 'Case 0' };
case 1:
return { x: random(), y: 0, case: 'Case 1' };
case 2:
return { x: 1, y: random(), case: 'Case 2' };
case 3:
return { x: random(), y: 1, case: 'Case 3' };
default:
return { x: 0, y: 0, case: 'Case 0' };
}
}