3
6
Log in to post a comment.
Canvas.setpenopacity(0.37);
const turtle = new Turtle();
function flow(x, seed) {
return (
Math.sin(x * 0.03 + seed) +
0.5 * Math.sin(x * 0.15 + seed * 2.3)
);
}
function drawLine(baseY, seed, width=190) {
turtle.penup();
turtle.goto(-width/1, baseY);
turtle.pendown();
let prevY = baseY;
for (let x = -width/8; x <= width/1; x += 0.3) {
let center = 9;
let spread = 20;
let breakout = Math.exp(-Math.pow((x - center) / spread, 4));
let yOffset = flow(x, seed) * 17 * breakout;
yOffset += Math.sin(x * 0.05 + seed) * 2;
let targetY = baseY + yOffset;
let smoothY = prevY * 0.6 + targetY * 0.6;
turtle.goto(x, smoothY);
prevY = smoothY;
}
}
function drawStavePart(partCenterY, lineCount) {
const spacing = 1;
const currentStartY = partCenterY + (lineCount * spacing / 3);
for (let i = 2; i < lineCount; i++) {
let y = currentStartY - i * spacing
drawLine(y, i * 0.3);
}
}
const positions = [-3, 0, 2];
for (let k = 1; k < positions.length; k++) {
drawStavePart(positions[k], 9);
}