97 lines
1.5 KiB
JavaScript
97 lines
1.5 KiB
JavaScript
let n = 0, randomX = [], randomY = [], randomS = [];
|
|
var rn;
|
|
|
|
|
|
let tree
|
|
let branchLength = 100
|
|
let minimumWeight = 0.03
|
|
let iteration = 15
|
|
|
|
function preload() {
|
|
createVRCanvas();
|
|
}
|
|
|
|
function setup() {
|
|
setVRBackgroundColor(200, 200, 200);
|
|
noStroke();
|
|
for(let i=0; i<iteration; ++i) {
|
|
randomX[i] = random(-175, 175);
|
|
randomY[i] = random(-175, 175);
|
|
randomS[i] = random(15, 20);
|
|
}
|
|
createTree();
|
|
angleMode(DEGREES)
|
|
rn = random(1,1000)
|
|
|
|
}
|
|
|
|
function draw() {
|
|
n = n + deltaTime;
|
|
setViewerPosition(0, 10, 350-n);
|
|
|
|
//respawn
|
|
if(n>=550){
|
|
n=0;
|
|
setup();
|
|
}
|
|
|
|
//draw plane
|
|
noStroke();
|
|
rotateX(90);
|
|
fill(0, 160, 0);
|
|
plane(5000, 5000);
|
|
fill(128, 128, 0);
|
|
rotateX(-90)
|
|
|
|
//draw trees
|
|
for(let i = 0; i<iteration;i++){
|
|
randomSeed(rn+i)
|
|
translate(randomX[i],0,randomY[i])
|
|
branch(randomS[i]);
|
|
translate(0,-randomS[i],0)
|
|
translate(-randomX[i],0,-randomY[i])
|
|
}
|
|
|
|
}
|
|
|
|
|
|
function branch(len) {
|
|
|
|
strokeWeight(map(len,10,30,0.5,5))
|
|
stroke(70,40,20)
|
|
|
|
line(0,0,0,0,len,0)
|
|
|
|
translate(0,len,0)
|
|
|
|
if(len > 10 ){
|
|
//stem/branch
|
|
for(var i=0;i<3;i++){
|
|
rotateY(random(100,140));
|
|
|
|
push();
|
|
|
|
rotateZ(random(20,50));
|
|
branch(len *0.7);
|
|
|
|
pop();
|
|
}
|
|
} else {
|
|
//leaf
|
|
var r = 80 + random(-20,20)
|
|
var g = 120+ random(-20,20)
|
|
var b = 40+ random(-20,20)
|
|
|
|
fill(r,g,b,200);
|
|
noStroke()
|
|
|
|
translate(5,0,0)
|
|
|
|
rotateZ(90)
|
|
|
|
triangle(-5,-5,5,5,-5,5)
|
|
}
|
|
|
|
|
|
}
|