Filling the screen upwards with triangles.
Log in to post a comment.
// You can find the Turtle API reference here: https://turtletoy.net/syntax
Canvas.setpenopacity(1);
// Global code will be evaluated once.
const turtle = new Turtle();
const startingPoints = 14; // min=2, max=150, step=1
const layers = 126; // min=1, max=150, step=1
const layerMax = 2; // min=1, max=30, step=1
const layerMin = 1; // min=1, max=30, step=1
function isEven(n) {
return n % 2 == 0;
}
function randomNumber(min, max) {
return Math.floor(Math.random() * (max - min) + min);
}
//let boundary = [[-100,84],[-93,95],[-80,88],[-73,97],[-62,85],[-53,92],[-33,84],[11,93],[33,78],[39,93],[45,84],[54,89],[69,83],[84,89],[100,78]];
let boundary = [[-100,84]];
for (let i=1; i<startingPoints; i++) {
boundary.push([200*i/startingPoints+randomNumber(0,5)-100,randomNumber(85,99)]);
}
boundary.push([100,randomNumber(85,99)]);
function drawBoundary() {
turtle.jump(boundary[0]);
for (let i=0; i < boundary.length; i++) {
turtle.goto(boundary[i]);
}
}
function linkPeaks() {
let newBoundary = boundary;
for (let i=0; i < boundary.length-1; i++) {
if (boundary[i][1]<boundary[i+1][1]) {
newBoundary.splice(i+1,1);
// i++;
}
}
boundary=newBoundary;
}
function newPeaks(){
let newBoundary = boundary;
for (let j=0; j < boundary.length-1; j++) {
if (Math.abs(boundary[j][0]-boundary[j+1][0]) > 1) {
newBoundaryPoint = [randomNumber(boundary[j][0],boundary[j+1][0]),Math.min(boundary[j][1],boundary[j][1])-randomNumber(layerMin,layerMax)];
newBoundary.splice(j+1,0,newBoundaryPoint);
j++;
}
}
newBoundary.splice(0,1,[-100,newBoundary[0][1]-randomNumber(layerMin,layerMax)]);
newBoundary.splice(-1,1);
newBoundary.push([100,newBoundary[newBoundary.length-1][1]-randomNumber(-5,5)]);
boundary=newBoundary;
}
drawBoundary();
// The walk function will be called until it returns false.
function walk(j) {
linkPeaks();
drawBoundary();
newPeaks();
drawBoundary();
return j < layers;
}