Hypocycloid

Author

Eric W. Weisstein
October 3, 2018

This notebook downloaded from http://mathworld.wolfram.com/notebooks/PlaneCurves/Hypocycloid.nb.

For more information, see Eric's MathWorld entry http://mathworld.wolfram.com/Hypocycloid.html.

©2018 Wolfram Research, Inc. except for portions noted otherwise

Parametric Equation

Hypocycloid[{a,b},t]

FullSimplify[Hypocycloid[{a,b},t]/.b->a/n]

xy=PlaneCurveData["Hypocycloid","ParametricEquations"][a,b][t]

Function[{a,b},ParametricPlot[{(a-b) Cos[t]+b Cos[(((a-b) t)/b)],(a-b) Sin[t]-b Sin[(((a-b) t)/b)]},{t,0,2π LCM[a,b]/a},ColorFunction->(Hue[#3]&)]]@@@{{5,1},{5,2},{3,1},{6,2},{6,1}}

Plots

<<Utilities`Typesetting`
<<Utilities`GIF`

All

Function[{a,b,th},ParametricPlot[{(a-b) Cos[t]+b Cos[(((a-b) t)/b)],(a-b) Sin[t]-b Sin[(((a-b) t)/b)]},{t,0,2π Denominator[a/b]},PlotLabel->{Symbol["a"]==a,Symbol["b"]==b}]]@@@{{2,1,4π},{3,1,6π},{3,2,4π},{(1/2),(1/3),4π},{5,(1/6),60π},{2(π/9),(π/7),28π},{5,(1/2),2π},{(5/3),(7/6),14π},{5/7,1/3,10},{(Sqrt[2]),1,10}}

Integers

V5

Show[GraphicsArray[
ParametricPlot[{#{Cos[t],Sin[t]},Hypocycloid[{#,1},t]},{t,0,2Pi},
Ticks->None,PlotStyle->{Dashing[{.05}],Red},AspectRatio->Automatic,
AxesOrigin->{0,0},
PlotLabel->TraditionalForm[InlineFraction[a,b]==#],
DisplayFunction->Identity]&/@{2,3,4,5}]
]

Show[GraphicsArray[Graphics[#,DisplayFunction->Identity]&/@Table[
HypocycloidFrames[{1,1/n},Table[t,{t,0,2Pi,2Pi/(n+2-If[n==4,1,0])}],PlotLabel->TraditionalForm[InlineFraction[a,b]==n]
],
{n,2,5}]]]

movie=Show[GraphicsArray[#,ImageSize->500]]&/@Transpose[Table[Hypocycloid[{1,1/n},{0,2Pi,.2},PlotLabel->TraditionalForm[InlineFraction[a,b]==n]
],{n,2,5}]];

Export[gifs<>"hypoci.gif",movie]//Timing

V6

GraphicsGrid[{
ParametricPlot[{#{Cos[t],Sin[t]},Hypocycloid[{#,1},t]},{t,0,2Pi},
Ticks->None,PlotStyle->{Dashing[{.05}],Red},
AxesOrigin->{0,0},
PlotLabel->InlineFraction[a,b]==#,
DisplayFunction->Identity]&/@{2,3,4,5}},ImageSize->400]

GraphicsGrid[{Graphics/@Table[
HypocycloidFrames[{1,1/n},Table[t,{t,0,2Pi,2Pi/(n+2-If[n==4,1,0])}],PlotLabel->InlineFraction[a,b]==n
],
{n,2,5}]},ImageSize->400]

Rational

V5

Show[GraphicsArray[
ParametricPlot[Hypocycloid[{#,1},t],{t,0,2Pi Denominator[#]},
Ticks->None,PlotStyle->Red,AspectRatio->Automatic,
AxesOrigin->{0,0},
Epilog->{Dashing[{.05}],Circle[{0,0},#]},
PlotLabel->TraditionalForm[InlineFraction[a,b]==#/.Rational[x_,y_]:>InlineFraction[x,y]],
DisplayFunction->Identity]&/@{5/3,7/3,8/3,9/4}]
]

Show[GraphicsArray[Graphics[#,DisplayFunction->Identity]&/@(HypocycloidFrames[{#,1},Table[t,{t,0,2Pi Denominator[#],2Pi Denominator[#]/4}],
PlotLabel->TraditionalForm[InlineFraction[a,b]==#/.Rational[x_,y_]:>InlineFraction[x,y]]
]&/@{5/3,7/3,8/3,9/4})
]]

movie=Show[GraphicsArray[#,ImageSize->500]]&/@Transpose[Hypocycloid[{#,1},{0,2Pi Denominator[#],.1Denominator[#]},
PlotLabel->TraditionalForm[InlineFraction[a,b]==#/.Rational[x_,y_]:>InlineFraction[x,y]]
]&/@{5/3,7/3,8/3,9/4}];

Export[gifs<>"hypocr.gif",movie]//Timing

V6

GraphicsGrid[{
ParametricPlot[Hypocycloid[{#,1},t],{t,0,2Pi Denominator[#]},
Ticks->None,PlotStyle->Red,PlotRange->#,
AxesOrigin->{0,0},
Epilog->{Dashing[{.05}],Circle[{0,0},#]},
PlotLabel->InlineFraction[a,b]==(#/.Rational[x_,y_]:>InlineFraction[x,y])]&/@{5/3,7/3,8/3,9/4}},ImageSize->400]

GraphicsGrid[{Graphics/@(HypocycloidFrames[{#,1},Table[t,{t,0,2Pi Denominator[#],2Pi Denominator[#]/4}],
PlotLabel->TraditionalForm[InlineFraction[a,b]==(#/.Rational[x_,y_]:>InlineFraction[x,y])]
]&/@{5/3,7/3,8/3,9/4})},ImageSize->400
]

Irrational

Hypocycloid[{1,Pi},{0,10000},PlotStyle->Red]

V5

Show[GraphicsArray[
ParametricPlot[
Evaluate[Hypocycloid[{1,#1},t]],{t,0,#2},
PlotStyle->Red,
PlotPoints->150,
DisplayFunction->Identity,
AspectRatio->Automatic,
Ticks->None,
PlotLabel->TraditionalForm[a/b==#1]]&@@@{{Pi,160},{Sqrt[2],300},{EulerGamma,300}}
],ImageSize->400]

V6

GraphicsGrid[{
ParametricPlot[
Evaluate[Hypocycloid[{1,#1},t]],{t,0,#2},
PlotStyle->Red,
Ticks->None,
PlotLabel->InlineFraction[a,b]==#1]&@@@{{Pi,160},{Sqrt[2],300},{EulerGamma,300}}},ImageSize->400]

GraphicsGrid[{
ParametricPlot[
Evaluate[Hypocycloid[{1,#1},t]],{t,0,#2},
PlotStyle->Red,
Ticks->None,
PlotLabel->InlineFraction[a,b]==#1]&@@@{{Pi,20},{Sqrt[2],20},{EulerGamma,20}}},ImageSize->400]

Curve Properties

Arc Length

xy=PlaneCurveData["Hypocycloid","ParametricEquations"][a,b][t]

FullSimplify[(Sqrt[Total[D[xy,t]^2]]),0<b<a]

FullSimplify[%/.b->a/n,n≥1&&a>0&&n∈Integers]

V4

Integrate[((2 a (-1+n) Abs[Sin[((n t)/2)]])/n),{t,0,2π}]

V4.2

Integrate[((2 a (-1+n) (Sqrt[((Sin[((n t)/2)])^2)]))/n),{t,0,2π}]

Integrate[((2 a (-1+n) Abs[Sin[((n t)/2)]])/n),{t,0,2π}]

V5

Integrate[((2 a (-1+n) (Sqrt[((Sin[((n t)/2)])^2)]))/n),{t,0,2π}]

Wrong

Integrate[((2 a (-1+n) Abs[Sin[((n t)/2)]])/n),{t,0,2π}]

FullSimplify[%50,n∈Integers]

V6

Integrate[((2 a (-1+n) (Sqrt[((Sin[((n t)/2)])^2)]))/n),{t,0,2π},Assumptions->n∈Integers&&n>0]

...wrong..

Table[((8 a (-1+n))/(n^2)),{n,5}]

Table[Integrate[((2 a (-1+n) (Sqrt[((Sin[((n t)/2)])^2)]))/n),{t,0,2π}],{n,5}]

V12

$Version

For n == a/b and b == 1:

Integrate[((2 a (n-1) )/n)Abs[Sin[((n t)/2)]],{t,0,2π }]//Timing

Assuming[n∈Integers&&n>0,Integrate[((2 a (n-1) )/n)Abs[Sin[((n t)/2)]],{t,0,2π }]]//Timing

Simplify[-((4 a (-1+n) (-1+Abs[Sin[n π]] Cot[n π]))/(n^2)),n∈Integers]

bug(358864): Refine[IntegerPart[LCM[a, b]/b], (a | b) ∈ Integers && b > 0] could return LCM[a, b]/b (etc.)

LCM[a, b]/a == b/GCD[a, b]

Do the integral assuming (a|b)∈Integers:

(res1=Assuming[0<b<a&&(a|b)∈Integers,Integrate[2(a-b) Abs[Sin[((a t)/(2 b))]],{t,0,2π b/GCD[a,b]}]])//Timing

Assuming[0<b<a&&(a|b)∈Integers,FullSimplify[res1]]===res1//Timing

(res2=Assuming[0<b<a&&(a|b)∈Integers,Integrate[2(a-b)Abs[Sin[((a t)/(2 b))]],{t,0,2π ((LCM[a,b])/a)}]])//Timing

Assuming[0<b<a&&(a|b)∈Integers,FullSimplify[res2]]===res2//Timing

Unforunately, this gives a result equal to 0/0:

res2/.{IntegerPart[x_]:>x,_FractionalPart->0}

Omit the integer condition in the integral:

(res3=Assuming[0<b<a,Integrate[2(a-b)Abs[Sin[((a t)/(2 b))]],{t,0,2π ((LCM[a,b])/a)}]])//Timing

Assuming[0<b<a&&(a|b)∈Integers,FullSimplify[res3]]//Timing

simp3=Assuming[0<b<a&&(a|b)∈Integers,Simplify[res3]]

Simplify[simp3/.{IntegerPart[x_]:>x,_FractionalPart->0}]

-((4 (a-b) (b-2 LCM[a,b]))/a)/.{a->4,b->1}

...wrong...

Apparently correct:

((8 (a-b) b IntegerPart[((LCM[a,b])/b)])/a)-((4 (a-b) b (-1+Cos[π 0]))/a)

((8 (a-b) LCM[a,b])/a)

ArcLengthFunction

V4.2

ArcLength[Hypocycloid[{a,b},t],t]

FullSimplify[Sqrt[#.#]&[D[Hypocycloid[{a,b},t],t]]/.b->a/n,n>1&&a>0]

Wrong

V5

ArcLength[Hypocycloid[{a,b},t],t]

Wrong

Integrate[((2 a (-1+n) (Sqrt[((Sin[((n t)/2)])^2)]))/n),{t,0,2π},Assumptions->n∈Integers]

Wrong

i=FullSimplify[ArcLength[Hypocycloid[{a,b},t],t],0<b<a&&t>0]

Limit[-((4 (a-b) b (-1+Abs[Sin[((a t)/(2 b))]] Cot[((a t)/(2 b))]))/a),t->0]

FullSimplify[i/.t->2π,0<b<a]

FullSimplify[%4 /.t->2π/.b->a/n,n∈Integers]

FullSimplify[%/.b->a/n,n∈Integers]

%7/.t->2π

FullSimplify[%/.t->2π,n∈Integers]

v6

ArcLength[Hypocycloid[{a,b},t],t]

FullSimplify[√(((((a-b) Cos[t]-(a-b) Cos[(((a-b) t)/b)]))^2)+(((-(a-b) Sin[t]-(a-b) Sin[(((a-b) t)/b)]))^2))]

Integrate[2 (Sqrt[(((a-b))^2) ((Sin[((a t)/(2 b))])^2)]),{t,0,t}]

ArcLength[Hypocycloid[{a,a/n},t],t]

Simplify[√(((((a-(a/n)) Cos[t]-(a-(a/n)) Cos[(((a-(a/n)) n t)/a)]))^2)+(((-(a-(a/n)) Sin[t]-(a-(a/n)) Sin[(((a-(a/n)) n t)/a)]))^2)),a>0]

Integrate[2 a (Sqrt[(((((-1+n))^2) ((Sin[((n t)/2)])^2))/(n^2))]),{t,0,t}]

FullSimplify[√(((((a-(a/n)) Cos[t]-(a-(a/n)) Cos[(((a-(a/n)) n t)/a)]))^2)+(((-(a-(a/n)) Sin[t]-(a-(a/n)) Sin[(((a-(a/n)) n t)/a)]))^2)),a>0&&n∈Integers&&n>0]

Integrate[((2 a (-1+n) (Sqrt[((Sin[((n t)/2)])^2)]))/n),{t,0,t}]

V8

(s=Assuming[0<b<a,ArcLength[Hypocycloid[{a,b},t],t]])//Timing

...wrong...

With[{a=1,b=.5},Plot[-((4 (a-b) b (-1+Abs[Sin[((a t)/(2 b))]] Cot[((a t)/(2 b))]))/a),{t,0,10}]]

FullSimplify[(Sqrt[#.#])&[D[Hypocycloid[{a,b},t],t]],0<b<a]

Integrate[2 (a-b) (Sqrt[((Sin[((a t)/(2 b))])^2)]),{t,0,t},Assumptions->0<b<a]//Timing

$Version

Explicit Values

Table[Integrate[((2 a (-1+n) (Sqrt[((Sin[((n t)/2)])^2)]))/n),{t,0,2π}],{n,5}]

Table[8a(n-1)/n,{n,5}]

Area

v5

Area[Hypocycloid[{a,b},t],{t,0,2π}]

FullSimplify[%]

FullSimplify[Area[Hypocycloid[{a,a/n},t],{t,0,2π}],n∈Integers]

v6

Area[Hypocycloid[{a,b},t],{t,0,2π}]

FullSimplify[Area[Hypocycloid[{a,a/n},t],{t,0,2π}],n∈Integers]

Slope

Slope[{(a-b) Cos[t]+b Cos[((a-b) t)/b],(a-b) Sin[t]-b Sin[((a-b) t)/b]},t]//FullSimplify

SpecialAffineCurvature

v6

FullSimplify[SpecialAffineCurvature[Hypocycloid[{a,b},t],t],0<b<a]

Tangential Angle

v4.2

FullSimplify[TangentialAngle[Hypocycloid[{a,b},t],t]]

v5.0

FullSimplify[TangentialAngle[Hypocycloid[{a,b},t],t]]

v6

TangentialAngle[Hypocycloid[{a,b},t],t]

Madachy Construction

HypocycloidByDiameters[n_,pts_]:=Module[{i},
{
Table[Line[{2{Cos[#],Sin[#]}&[2Pi i/pts]-{Cos[#],Sin[#]}&[Pi -2Pi i(n-1)/pts],{Cos[#],Sin[#]}&[Pi -2Pi i(n-1)/pts]}],{i,0,pts}],
ParametricPlot[Evaluate[Hypocycloid[{n,1},t]1/(n-2)],{t,0,2π},
DisplayFunction->Identity,
AspectRatio->Automatic,
PlotStyle->{Thickness[.02],Red},
Axes->None][[1]],
{Blue,Thickness[.02],Circle[{0,0},1]}
}
]

Show[GraphicsArray[Partition[
Graphics[#,AspectRatio->Automatic]&/@Table[HypocycloidByDiameters[i,40],{i,3,8}],3]]]

Vector Properties

parm={(a-b) Cos[t]+b Cos[((a-b) t)/b],(a-b) Sin[t]-b Sin[((a-b) t)/b]};
assum=a>0&&b>0&&t>0;
xform={Abs[x_]^(n_/;Mod[n,2]==0):>x^n};

VectorLength

Assuming[assum,FullSimplify[Norm[parm]/.xform]]

NormalVector

Assuming[assum,FullSimplify[NormalVector[parm,t]/.xform]]

TangentVector

Assuming[assum,FullSimplify[TangentVector[parm,t]/.xform]]