let metadata={"Collection":"Merkle Tree's","Version":"420.69","Author":"@DogeOfDogeSt"}; let sizew = window.innerWidth; let sizeh = window.innerHeight; let numdays = (Date.now()/1000 - minttime)/550; var grass = []; var grassColour; var grassLength = (numdays/2000 <=15) ? (numdays/2000) :15 if(grassLength < 1){ grassLength=1; } let daycount = 0; let palettes = [ ["rgb(139, 191, 0)","rgb(168, 227, 20)","rgb(168, 227, 20)","rgb(51, 66, 12)"], ["rgb(245,185,224)","rgb(226,129,207)","rgb(226,129,207)","rgb(78,17,53)"], ["rgb(161,122,65)","rgb(231,216,211)","rgb(138,91,35)","rgb(68,29,15)"], ["rgb(242,239,222)","rgb(126,137,61)","rgb(56,72,25)","rgb(65,59,47)"], ["rgb(139, 191, 0)","rgb(168, 227, 20)","rgb(168, 227, 20)","rgb(51, 66, 12)"], ["#6FA09B","rgb(29,204,144)","rgb(36,68,49)","rgb(5,40,28)"]] let trunks = ["rgb(20,20,20)","rgb(40,40,40)","rgb(50,40,40)","rgb(114,114,114)","rgb(37,20,12)"]; let grasses = ["rgb(24,54,23)","rgb(37,90,25)","rgb(93,75,54)","rgb(40,65,4)"]; function setup() { createCanvas(sizew, sizeh); randomSeed(mintseed); angleMode(RADIANS) grassColour = color(grasses[grassChoice]) for (var i = 0; i <= 20; i+=1) { grass.push(new Grass(createVector(width/2, height))); } } function draw() { let angleChoice = angle1; background(10, 10, 10); let startPoint = [sizew / 2, sizeh]; let length = randomBetween(70, 120); let weight = randomBetween(15, 45); let branchAngle = PI / angleChoice; let parentCount = 0; let rootBranch = new Branch(startPoint, weight, length, branchAngle, parentCount); strokeWeight(weight); stroke(30); branch(rootBranch); noLoop(); stroke(grassColour, random(50, 200)) for (var i = 0; i < grass.length; i++) { var g = grass[i]; g.draw(); } } function branch(currentBranch) { let { startPoint, weight, length, angle, parentCount } = currentBranch; let x1 = startPoint[0] + length * cos(angle); let y1 = startPoint[1] - length * sin(angle); let endpoint = [x1, y1]; strokeWeight(weight); if(parentCount > 16) { stroke(palettes[paletteChoice][0]); } else if (parentCount > 13) { stroke(palettes[paletteChoice][1]); } else if (parentCount > 12) { stroke(palettes[paletteChoice][2]); } else if(parentCount > 7){ stroke(palettes[paletteChoice][3]); } else{ stroke(trunks[trunkChoice]); } line(startPoint[0], startPoint[1], endpoint[0], endpoint[1]); let angleMax = angle + (PI / 4); let angleMin = angle - PI / 4; let angleDiff = randomBetween(0, angleMax - angleMin - (PI / 16)); let angle1 = angleMax - angleDiff / 2; let angle2 = angleMin + angleDiff / 2; let newWeight = randomBetween(weight * 0.5, weight * 0.8); let newLength = randomBetween(length * 0.7, length * .9); if (newLength < 3) { return; } if (daycount >= numdays) { return; } daycount++; let branchChoice = randomBetween(1,4); if(branchChoice > 2){ let angle2Branch = new Branch(endpoint, newWeight, newLength, angle2, parentCount + 1); let angle1Branch = new Branch(endpoint, newWeight, newLength, angle1, parentCount + 1); branch(angle1Branch); branch(angle2Branch); }else{ let angle2Branch = new Branch(endpoint, newWeight, newLength, angle1, parentCount + 1); let angle1Branch = new Branch(endpoint, newWeight, newLength, angle2, parentCount + 1); branch(angle1Branch); branch(angle2Branch); } } class Branch { constructor(startPoint, weight, length, angle, parentCount) { this.startPoint = startPoint; this.weight = weight; this.length = length; this.angle = angle; this.parentCount = parentCount; } } function randomBetween(low, high) { return random(high - low) + low; } function Grass(loc) { this. blades = [ ]; this.am =int(random(1, 5)); this.loc = loc; this.loc.x = this.loc.x + random(-30, 30) for (var i = 0; i < this.am; i++) { this.blades.push(new Blade(random(1, grassLength))); } Grass.prototype.draw = function() { for (var i = 0; i < this.blades.length; i++) { var blade = this.blades[i]; push(); translate(this.loc.x, this.loc.y); rotate(radians(blade.angle)); blade.branch(blade.segments); pop(); } } } function Blade(segments) { var num = 0; this.segments = segments; this.angle = random(-10, 10); this.branch = function(len) { var len = len *0.79; strokeWeight(1); line(0, 0, 0, -len); push(); translate(0, -len); if (len > 5) { rotate(radians(this.angle + sin(len+num) )); this.branch(len) } pop(); } }