epicycloid, a Python code which plots an epicycloid curve.

An epicycloid is the curve traced by a point on the perimeter of a circle of radius r1 which is rolling around the perimeter of a a circle of radius r2. Normally, r1 is smaller than r2.

The equations for the (x,y) coordinates of the point are:

        x(t) = (r1+r2) * cos(t) - r1 * cos ( (r1+r2)*t/r1 )
        y(t) = (r1+r2) * sin(t) - r1 * sin ( (r1+r2)*t/r2 )
It is usual to write k = r2/r1. If k is an integer, then the curve is closed, and has k cusps. If k is rational, and in lowest terms is p/q, then it has p cusps. Otherwise, if k is irrational, then mathematically the curve is not closed, and fills the annulus of radiuses r2 and r2+r1.

To use the programs, you specify:


The computer code and data files made available on this web page are distributed under the MIT license


epicycloid is available in a MATLAB version and an Octave version and a Python version.

Related Data and Programs:

caustic, a Python code which generates an image of a caustic, by drawing n equally spaced points in a circle, and then connecting specific pairs of points using a spacing parameter m.

fern, a Python code which displays the Barnsley fractal fern.

fibonacci_spiral, a Python code which displays points on a Fibonacci spiral, suggesting the arrangement of seeds in a sunflower, for instance.

hilbert_curve, a Python code which computes the sequence of discrete Hilbert curves whose limit is a space-filling curve.

mandelbrot, a Python code which generates an image of the Mandelbrot fractal set;

Source Code:

Last modified on 20 December 2022.