xxxxxxxxxx
73
var margin = 24;
var gridwidth = 12;
var sizeholes = 1.5;
var numholes = 88;
var boolDoRefresh = true;
function setup() {
createCanvas(720, 720);
}
function draw() {
if (boolDoRefresh) {
background(255);
var gridw = (height - 2 * margin) / gridwidth;
var gridh = (width - 2 * margin) / gridwidth;
var empty = []
for (var i = 0; i < numholes; i++) {
empty = append(empty, generateVoid(gridw, gridh));
}
for (var i = 0; i < gridw; i++) {
for (var j = 0; j < gridw; j++) {
var draw = true;
for (var k = 0; k < empty.length; k++) {
for (var l = 0; l < empty[k].length; l++) {
if (i == empty[k][l][0] && j == empty[k][l][1])
draw = false;
}
}
if (draw) {
drawLine(margin + i * gridwidth + gridwidth / 2,
margin + j * gridwidth + gridwidth / 2, gridwidth * 2,
randomGaussian(PI, PI / 6));
}
}
}
boolDoRefresh = false;
}
}
function drawLine(x, y, length, angle) {
stroke(0);
line(x - length * sin(angle) / 2, y - length * cos(angle) / 2,
x + length * sin(angle) / 2, y + length * cos(angle) / 2);
}
function generateVoid(gridw, gridh) {
var x = floor(random() * gridw);
var y = floor(random() * gridh);
var radius = abs(randomGaussian(0, sizeholes));
var empty = [];
for (var i = -1 * radius; i < radius; i++) {
for (var j = -1 * radius; j < radius; j++) {
if ((sqrt(i * i + j * j) <= radius) &&
(random() * sqrt(2) * radius > sqrt(i * i + j * j)) &&
random() * 10 > random() * 2) {
empty = append(empty, [floor(x + i), floor(y + j)]);
}
}
}
return empty;
}
function mousePressed() {
boolDoRefresh = true;
}