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["Graphics`ImplicitPlot`"]
(*MathSource Item:0200-529*)

$HistoryLength = 10;

Astroid

Description

Astroid is a special case of Hypotrochoid.
Astroid is defined as the trace of a point on a circle of radius r rolling inside a fixed circle of radius 4 r or 4/3 r. The latter is known as double generation.

Parametric form: {Cos[t]^3, Sin[t]^3}, 0 <= t < 2 Pi.
Cartesian equation: x^(2/3) + y^(2/3) == a^(2/3).
Expands to  (x^2 + y^2 - a^2)^3 + 27 a^2 x^2 y^2 == 0.
a is the scaling factor.

AstroidGenerator2[LastFrameOnly -> True, Ticks -> None, 
        NumberOfFrames -> 4*25 + 1];

HypotrochoidGenerator[{1,  3/4,  3/4}, LastFrameOnly -> True, 
        Ticks -> None, NumberOfFrames -> 4 19 + 1];

Properties

Trammel of Archimedes

Astroid is the Envelope of a family of constant length lines as shown below.
This mechanism is called Trammel of Archimedes. It can also be used to generate Ellipses. see Ellipse.

AstroidGenerator[{0,  5.4,  (2*Pi)/80}, 
        LastFrameOnly -> True];

Envelope of ellipsese

Astroid is the envelope of co-axial Ellipses whoes sum of major and minor axes is contsant.

AstroidGenerator3[{0,  .9,  .07}, 
        LastFrameOnly -> True];

Evolute

The Evolute of an Astroid is another Astroid. (see Hypocycloid)

ParaPlot[Astroid[][t], {t, 0, 2 π, ((2 π)/80)}, 
        PlotEvolute -> True, 
        CurveColorFunction -> {Hue[ .75, 1,  .8] &}, 
        LineStyle -> {Hue[0]}, 
        DotStyle -> {{Hue[ .8], PointSize[ .011]}}, 
        AspectRatio -> Automatic, Axes -> False];

ParaPlot[{Astroid[][t], Evolute[Astroid[][t], t]}, {t, 0, 
          2 π}, PlotStyle -> {Hue[ .65], Hue[0]}, 
        AspectRatio -> Automatic, Axes -> False];

ParaPlot[{((3 Cos[t])/4) + (1/4) Cos[3 t], ((3 Sin[t])/4) - 
            (1/4) Sin[3 t]}, {t, 0, 2 π, ((2 π)/80)}, 
        NormalLineLength -> 5, 
        CurveColorFunction -> {Hue[ .75, 1,  .8] &}, 
        CurveStyle -> {Thickness[ .007]}, PlotRange -> All, 
        AspectRatio -> Automatic, Axes -> False];

Pedal

The Pedal of an Astroid with respect to its center is a Rose too.

ParaPlot[Astroid[][t], {t,  0,  2*Pi,  (2*Pi)/(4*18)}, 
        PlotCurve -> False, PedalPoint -> {0, 0}, 
        LineStyle -> {Hue[Random[], 1,  .9]}, 
        AspectRatio -> Automatic, Axes -> False];

ParaPlot[{Astroid[][t], Pedal[Astroid[][t], t, {0, 0}]}, {t, 
          0, 2 π}, PlotStyle -> {Hue[ .65], Hue[0]}, 
        AspectRatio -> Automatic, Axes -> False];

Deltoid and Astroid

The Caustic of a Deltoid with rays at Infinity is an Astroid.
The following cell generate a animation of the caustic of an deltoid, with parallel rays. The parallel rays rotate 180 degrees. Change the value of step to adjust the number of frames.

Clear[ gp1, gp2, lightSource, d, p, step];

step = 5;
d = N@ Degree;
p = N[2 Pi/12];

Do[
lightSource = 20000 {Cos[#], Sin[#]}& [theta];
gp1 = First@ ParaPlot[ Deltoid[][t],
	{t,0, 2 Pi},
	Which[
		N[0 <= theta < 30 d],
			Range@@{-4 p+.001, 4 p-.001, .1},
		N[30 d <= theta < 90 d],
			Range@@{0 +.001, 4 p-.001, .1},
		N[90 d <= theta < 150 d],
			Range@@{0 +.001, 8 p-.001, .1},
		N[150 d <= theta <= 180 d],
			Range@@{4 p+.001, 8 p-.001, .1}
	],
	CausticLineLength->30000,
	CausticOrigin->lightSource,
	CausticLineStyle->{Hue[0]},
	PlotCurve->False,
	PlotDot->False,
	CurveColorFunction->(GrayLevel[1]&),
	AspectRatio->Automatic,
	PlotRange->{{-1.5,1.6},{-1.6,1.6}},
	DisplayFunction->Identity
];

gp2 = First@ ParaPlot[ 
	Deltoid[][t],
	{t,0 , 2 Pi},
	Which[
		N[0 <= theta < 30 d],
			Range@@{4 p+.001, 8 p-.001, .1},
		N[30 d <= theta < 90 d],
			Range@@{4 p+.001, 12 p-.001, .1},
		N[90 d <= theta < 150 d],
			Range@@{-4 p +.001, 0-.001, .1},
		N[150 d <= theta <= 180 d],
			Range@@{-4 p+.001, 4 p-.001, .1}
	],
	CausticLineLength->30000,
	CausticOrigin-> -lightSource,
	PlotCurve->False,
	CausticLineStyle->{Hue[0]},
	PlotCurve->False,
	PlotDot->False,
	CurveColorFunction->(GrayLevel[1]&),
	AspectRatio->Automatic,
	PlotRange->{{-1.5,1.6},{-1.6,1.6}},
	DisplayFunction->Identity
];

Show[ Graphics[{gp1, gp2}],
	PlotRange->{{-2,2},{-2,2}},
	Axes->False,
	AspectRatio->Automatic,
	PlotRange->{{-1.5,1.6},{-1.6,1.6}},
	Background->Hue[0,0,0],
	DisplayFunction->$DisplayFunction
];
, {theta, 0, 180 d- 180d/step, 180 d/step}
];

Clear[ gp1, gp2, lightSource, d, p, step];

Radial

The Radial of an Astroid is a Rose.

ParaPlot[Astroid[][t], {t, 0, 2 π, ((2 π)/80)}, 
        PlotRadial -> True, PlotDot -> False, 
        LineStyle -> {Hue[0]}, 
        DotStyle -> {{Hue[ .9], PointSize[ .01]}}, 
        AspectRatio -> Automatic, Axes -> False];

ParaPlot[{Astroid[][t], Radial[Astroid[][t], t]}, {t, 0, 
          2 π}, PlotStyle -> {Hue[ .65], Hue[0]}, 
        AspectRatio -> Automatic, Axes -> False];

Graphics Gallery

parallels

ParaPlot[Hypotrochoid[1,  1/4,  1/4][t], {t,  0,  
          2*Pi,  (2*Pi)/(4*50)}, 
        ParallelCurveOffset -> Table[i, {i, - .5,  .5,  .25}], 
        PlotCurve -> False, AspectRatio -> Automatic, 
        Axes -> False, PlotDot -> False, 
        DotStyle -> 
          Table[{Hue[Random[], 1,  .9], 
              PointSize[ .012]}, {20}]];