Epicycloid

TurtleToy Code to Draw an Epicycloid

Log in to post a comment.

// TurtleToy Code to Draw an Epicycloid
Canvas.setpenopacity(1);
const turtle = new Turtle();

// User-defined parameters
const directrixRadius = 200; // min=0 max=200 step=1 // Radius of the fixed circle
const epicycleRadius = 20; // min=0 max=100 step=5 // Radius of the rolling circle
const numberOfSegments = 300; // min=0 max=300 step=1; // Increase for a smoother curve
const size = 0.3; // min=0.1 max=1 step=0.1 // Scaling factor for the overall size

// Function to draw the Epicycloid
function drawEpicycloid() {
    for (let i = 0; i <= numberOfSegments; i++) {
        const angle = i * 2 * Math.PI / numberOfSegments;
        const x = (directrixRadius + epicycleRadius) * Math.cos(angle) - epicycleRadius * Math.cos(((directrixRadius + epicycleRadius) / epicycleRadius) * angle);
        const y = (directrixRadius + epicycleRadius) * Math.sin(angle) - epicycleRadius * Math.sin(((directrixRadius + epicycleRadius) / epicycleRadius) * angle);
        
        if (i === 0) {
            turtle.jump(x * size, y * size);
        } else {
            turtle.goto(x * size, y * size);
        }
    }
}

// Draw the Epicycloid
drawEpicycloid();

function loop() {
    return false;
}