Note

This Mathematica notebook is from the WWW project A Visual Dictionary of Special Plane Curves. Copyright © 1995-2000 by Xah Lee. (http://xahlee.org/)

Packages and Initializations

Needs["ParaPlot`"]
Needs["PlaneCurveFormulas`"]
Needs["PlaneCurveGenerator`"]

Needs["TrochoidPlot`"]

Needs["TrochoidShow`"]

Needs["Graphics`ImplicitPlot`"]
(*MathSource Item:0200-529*)

Hypotrochoid

Hypotrochoid is a family of curves. It is a Roulette. (see Roulette).
(1) Let there be a point Q fixed to a circle B. (it may be inside or outside of this circle)
(2) Let circle B roll inside a fixed circle A without slipping.
(3) The trace of Q is Hypotrochoid.

Let radius of circle B be b and radius of circle A be a, and Let the distance from the tracing point to the center of circle B be h.
Parametric formula:

Hypotrochoid[a,b,h][t]

Periodicy:
If a == 1, then the periodicy is Numerator[b].
If a == 1 and b is irrational, then the curve is not periodic.

Special cases:

 h == 0, Circle.
 b == h, Hypocycloid.
 a/2 == b AND h != b, Ellipse.
 a/3 == b == h, Deltoid/Tricuspid.
 a/4 == b == h, Astroid.
 a = n/(n+1), b = (n-1)/(2 (n+1)), h = 1/2, n is an integer greater than 2, Rose.

(* 5 cusped Hypocycloid *)
HypotrochoidGenerator[ {1,1/5,1/5}, {0, 5.6, .05},
LastFrameOnly->True];

HypotrochoidGenerator[ {1,2/5,1}, {0, 12, .05},
LastFrameOnly->True];

(* Ellipse *)
HypotrochoidGenerator[ {2,1,.5}, {0, 5.5},
	LastFrameOnly->True, NumberOfFrames->70,
	Axes->False
];

(* Ellipse *)
HypotrochoidGenerator[ {2,1,1.5}, {0, 5.5},
	LastFrameOnly->True, NumberOfFrames->70,
	Axes->False
];

(* Line *)
HypotrochoidGenerator[ {2,1,1}, {0, 2.6},
	LastFrameOnly->True, NumberOfFrames->70,
	Axes->False];

(*Rose*)
Clear[n]; n = 4;

HypoTrochoidPlot[ 1/2 - 1/(2*n), {(1 + n)/(2*n)},
	TrochoidPlot`RotationRange->{0, 3 2 Pi, 3 2 Pi/(48 4)},
	CirclesOn->True,
	NumberOfSpokes->1,
	Axes->False,
	DiskStyle->{Hue[.18,1,0]},
	DotStyle->{{Hue[0], PointSize[.02]}},
	SpokeStyle->{
		{Hue[.35,1,.5], Thickness[.013]},
		{Hue[.7,1,.9], Thickness[.013]},
		{Hue[.35,1,.5], Thickness[.013]}
	}
];

ParaPlot[ Hypotrochoid[1,1/5,2][t], {t,0, 2 Pi},
	AspectRatio->Automatic];

ParaPlot[ Hypotrochoid[1,7/13,7/13][t], {t,0, 7 2 Pi},
	AspectRatio->Automatic];