xxxxxxxxxx
61
let init_num = 8;
let init_length = 100;
let init_angle = 90;
let shrink_factor = 0.7;
let webbyness = 5;
function setup() {
createCanvas(600, 600);
angleMode(DEGREES);
noLoop();
}
function draw() {
background(0, 0, 40);
translate(width/2, height/2);
InitializeWeb(init_length, init_num, init_angle);
}
function InitializeWeb(length, num, angle) {
stroke(255, 80, 80);
for (let i = 0; i < num; i++) {
push();
rotate(random(0, 360));
string = new Web(length, angle);
Spread(string, length, angle);
pop();
}
}
function Spread(string, len, ang) {
string.drawLines();
len *= shrink_factor;
ang = random(ang-30, ang+20);
if (len > webbyness) {
push();
rotate(ang);
Spread(string, len, ang);
pop();
push();
rotate(-ang);
Spread(string, len, ang);
pop();
}
}
class Web {
constructor() {
this.string_len = random(init_length/2, init_length);
this.string_ang = random(init_angle/2, init_angle);
}
drawLines() {
line(0, 0, 0, this.string_len);
translate(0, this.string_len);
}
}