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`"]
(*MathSource Item:0207-986*)

Needs["PlaneCurveFormulas`"]


Needs["PlaneCurveGenerator`"]

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

Envelope

(* "paint splash by tangent" *)
ParaPlot[ {t, 2 Cos[t] +t}, {t, -5, 10,.1}, 
	TangentLineLength->60, PlotDot->False,
	PlotRange->{{-6,11},{-6,11}},
	TangentLineStyle->Table[Hue@i,{i,0,1,.02}],
	Axes->False
];

Envelope can be thought as a way of deriving a new curve based on a set of curves. The Envelope of a set of curves is a curve C such that C is tangent to every member of the set.

The concept of envelope is easily understood by looking at its graph.

(* cycloid, 9 sec. *)

ParaPlot[ { t -Sin[t], 1 -Cos[t]}, {t, -0.001, 6 Pi, .31415},
	PlotDot->False,
	AspectRatio->Automatic,
	PlotRange->{{-2.5,21},{-3,3}},
	Axes->False
];

ParaPlot[ { t -Sin[t], 1 -Cos[t]}, {t, -0.001, 6 Pi, .31415},
	TangentLineLength->7, PlotCurve->False, PlotDot->False,
	TangentLineStyle->{{Hue[0], Thickness[.004]}},
	AspectRatio->Automatic,
	PlotRange->{{-2.5,21},{-4,4}},
	Axes->False
];

ParaPlot[ { t -Sin[t], 1 -Cos[t]}, {t, -0.001, 6 Pi, .31415},
	PlotOsculatingCircle->True,
	PlotDot->False, PlotCurve->False,
	LineStyle->{{Hue[0], Thickness[.004]}},
	AspectRatio->Automatic,
	PlotRange->{{-2.5,21},{-6.1,2.1}},
	Axes->False
];

For more examples of Envelope, see
Astroid, Cardioid, Catenary, Caustic, Deltoid, Evolute, Lemniscate of Bernoulli, Nephroid, Parabola.
and epicycloid and hypocycloid...etc.

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

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

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

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

ParaPlot[ {Cos[t],Sin[t]},
	{t, Pi+.00001, 2 Pi+.0001, Pi/40},
	CausticLineLength->5100, CausticOrigin->{0,5000},
	PlotDot->False,
	PlotCurve->False
	CurveColorFunction->{Hue[.7]&},
	CurveStyle->Thickness[.007],
	CausticLineStyle->{
		{RGBColor[Random[],Random[], Random[]]},
		{RGBColor[Random[],Random[], Random[]]}
	},
	AspectRatio->Automatic,
	PlotRange->{{-1.5,1.5},{-2,.5}},
	Axes->False,
	Background->Hue[0,0,0]
];

It is the Envelope of a set of circles with centers on a given circle C and each member of the set is tangent to a chord that bisect C.

Clear[circles];

circles =
	Table[ Circle[{Cos@i, Sin@i}, Abs@ Cos@ i ], {i, -Pi, Pi, 2 Pi/30} ];

Show[ Graphics[ {Hue[Random[],1,.7], circles}],AspectRatio->Automatic];
Clear[ circles];

ParaPlot[ Nephroid[][t], {t, 0, 2 Pi, 2 Pi/60},
	NormalLineLength->20,
	PlotDot->True,
	PlotCurve->False,
	CurveColorFunction->{Hue[0,0,0]&},
	LineStyle->{RGBColor[Random[],Random[], Random[]]},
	AspectRatio->Automatic,
	PlotRange->{{-2,2}1.1,{-2,2}},
	Axes->False
];

Clear[ circles, p, center];

p = {-2,0};

circles =
	Table[
		Circle[
			center = {Cos@i, Sin@i},
			Sqrt[(center -p).(center-p)]
		], 
		{i, -Pi, Pi, 2 Pi/30}
	];

Show[ Graphics[ {Hue[Random[],1,.7], circles}],
AspectRatio->Automatic, Axes->True];

Clear[ circles, p, center];

Clear[ gp1, gp2];

gp1 = ParaPlot[ Deltoid[][t], {t,0, 2 Pi},
	Range@@{-2 Pi/3+.001, 2 Pi/3-.001, .1},
	CausticLineLength->20000, CausticOrigin->{15000,0},
	CausticLineStyle->{Hue[0]},
	PlotCurve->False,
	PlotDot->False, DisplayFunction->Identity
];

gp2 = ParaPlot[ Deltoid[][t], {t,0, 2 Pi},
	Range@@{Pi 4/6+.001, Pi 2/6+ Pi-.001, .1},
	CausticLineLength->20000, CausticOrigin->{-15000,0},
	PlotCurve->False,
	CausticLineStyle->{Hue[0]},
	PlotDot->False, DisplayFunction->Identity
];

Show[ 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];

Clear[gp1,gp2];

DeltoidGenerator2[ {1,3,3.5},
	{0,5.2, 5/30},
	LastFrameOnly->True
];

ParaPlot[ {Cos[t],Sin[t]}, {t, 0, 2 Pi,2 Pi/(54)},
	CausticLineLength->5, CausticOrigin->{1,0},
	PlotDot->False, CurveColorFunction->{Hue[.7]&},
	AspectRatio->Automatic,
	PlotRange->{{-1.2,1.2},{-1.2,1.2}},
	Axes->False,
	Background->Hue[0,0,0],
	Epilog->{Hue[.18], PointSize[.03], Point[{1,0}]}
];

Clear[ circles, curve];

circles =
	Table[ Circle[ p = Hyperbola[Sqrt@2][i], Sqrt[p.p] ], 
		{i, -Pi, Pi, 2 Pi/60}
	];

curve = First@ ParaPlot[ Hyperbola[Sqrt@2][t], {t,-3.14,3.14, 2 Pi/60},
	DotStyle->{Hue[.35]}, PlotCurve->True, PlotDot->False,
	DisplayFunction->Identity
];

Show[
	Graphics[ 
		{Hue[0], circles, curve}
	],
	AspectRatio->Automatic,
	Axes->True,
	PlotRange->{{-1,1},{-1,1}} 4
];

Clear[ circles, curve];