A Hypotrochoid is a curve traced by a point attached to a circle of radius r rolling around the inside of a fixed circle of radius R, where the point is a distance d from the center of the interior circle...
Processing code:
/**
adapted from some
code here:
http://www.archimy.com/examples/2d-ellipse.html
change a, b, d for dramatic changes in scale, try
float a = 5.0; //5.0 original values
float b = 3.0;//3.0
float d = 5.0;//5.0
try:
float a = 15.0*2; //5.0
float b = 1.0*2;//3.0
float d = 15.0*2;//5.0
*/
//z must be zero
float z = 0.0;
//t-parameter
float tmin = 0.0;
float tmax = 6.0*PI;//6.0*PI; /*try differant values here */
float tgrid = 400.0;//400.0;
/*Constants, affect scale and form hugely */
float a = 70.0; //5.0
float b = -6.0;//3.0
float d = 70.0;//5.0
float k, m;
void setup() {
size(500, 500);
background(0);
}
void draw() {
translate(width/2, height/2);
tmin++;
tmax++;
k = a - b;
m = (a - b) / b;
//Calculations
float x = k * cos(tmin) + d * cos(m * tmin);
float y = k * sin(tmax) - d * sin(m * tmax);
noStroke();
fill(123, 0, 255, 120);
ellipse(x, y, 12, 12);
}
This site here provided some code in Archim v2.1 which I adapted for Processing and experimented with the parameters of the equation:
http://www.archimy.com/examples/2d-hypotrochoid.html