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);
}