xxxxxxxxxx
78
let leaves = 5;
function median(values){
if(values.length ===0) throw new Error("No inputs");
values.sort(function(a,b){
return a-b;
});
var half = Math.floor(values.length / 2);
if (values.length % 2)
return values[half];
return (values[half - 1] + values[half]) / 2.0;
}
function setup() {
angleMode(DEGREES);
createCanvas(400, 400);
background(10, 50, 100);
}
function draw(){
var line_start_x = width/2;
var line_end_x = width/2;
var line_start_y = height;
var line_end_y = height-height/2;
var y_values = [];
for (var y = line_end_y+30; y<=line_start_y; y=y+20){
y_values.push(y);
}
strokeWeight(5);
strokeWeight(5);
stroke(25, 150, 100);
line(line_start_x, line_start_y, line_end_x, line_end_y);
if (leaves > 0){
add_leaf(line_start_x, y_values);
leaves -= 1;
}
let v1 = createVector(line_start_x, median(y_values));
stroke(255, 0, 0);
strokeWeight(20);
point(v1.x, v1.y);
}
function add_leaf(x, y_array){
let option = random([0, 1]);
if (option == 0){
// ellipse(random(x-20, x+20), random(y_array)-20, random(20, 50), random(15, 20));
push();
let v1 = createVector(x, median(y_array));
let rand = round(random([random(-1, -10), random(1, 10)]))
console.log(rand);
rotate(rand, v1);
let y_rand = random(y_array);
line(x, y_rand, random(x-50, x-100), random(y_rand+50, y_rand));
pop();
} else if (option == 1){
push()
let v1 = createVector(x, median(y_array));
let rand = round(random([random(-1, -10), random(1, 10)]))
console.log(rand);
rotate(rand, v1);
let y_rand = random(y_array);
line(x, y_rand, random(x-50, x-100), random(y_rand+50, y_rand));
pop()
}
}