Shaded Sine

Shaded sine curve, with variable density.

Log in to post a comment.

const width = 200; // min=100, max=200, step=1
const height = 60; // min=10, max=100, step=1
const step = .75; // min=0.1, max=3, step=0.05
const maxLengthRatio = 0.9; // min=0.01, max=1, step=.01

const maxLength = maxLengthRatio * height;
Canvas.setpenopacity(1);
const turtle = new Turtle();
turtle.penup();

let x = -(width / 2);
turtle.left(90);

// The walk function will be called until it returns false.
function walk(i) {
    turtle.penup();
    turtle.goto(x, 0);
    let length = height * Math.sin((width - x) / 10);
    let absLength = Math.abs(length);
    if (absLength > maxLength) {
        if (length > 0) {
            turtle.forward(length - maxLength);
            turtle.pendown();
            turtle.forward(maxLength);   
        } else {
            turtle.forward(-(absLength - maxLength));
            turtle.pendown();
            turtle.forward(-maxLength);
        }
    } else {
        turtle.pendown();
        turtle.forward(length);
    }
    
    x += step;
    return x < width / 2;
}