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*)

Hyperbola

A Family of hyperbolas with eccentricities
Table[ 1/a, {a,.25,.99, (.99-.25)/7}]

ParametricPlot[
	Evaluate@ Map[(Hyperbola[#][t])&,
		Table[ 1/a, {a,.25,.99, (.99-.25)/7}]
	],
	{t, 0.01,Pi/2, 3/2 Pi, 6.28},
	AspectRatio->Automatic,
	PlotRange->{{-5,5},{-5,5}},
	PlotStyle->
		Map[ {Thickness[.01],#1}&, Table[Hue[.75,i,1],{i,.3,1,(1-.3)/7}]],
	Background->Hue[.18],
	Axes->False
];

A Family of co-focal hyperbolas with eccentricities
Table[ c/a, {a,.25,.99, (.99-.25)/7}]

Clear[c];
c = 1;

ParametricPlot[
	Evaluate[
		Table[{a Sec[t], Sqrt[c^2-a^2] Tan[t]},{a,.25,.99, (.99-.25)/7}]
	],
	{t, 0.01,Pi/2, 3/2 Pi, 6.28},
	PlotStyle->
		Map[ {Thickness[.01],#1}&, Table[Hue[0,i,1],{i,.3,1,(1-.3)/7}]],
	PlotRange->{{-1,1} , {-1,1} } 3 c,
	Background->Hue[0.18],
	AspectRatio->Automatic,
	Axes->False,
	Prolog->{{Hue[.75], PointSize[.03], Point[{-1,0}],Point[{1,0}]}}
];
Clear[c]

Clear[e]; e = Sqrt[2]; (*try 1.1, 5*)
ParaPlot[ Hyperbola[e][t], {t,0, 2 Pi-.001},
	PlotRange->{{-8,8},{-8,8}},AspectRatio->Automatic];

ImplicitPlot[ x^2 - y^2/(e^2 - 1) == 1, {x, -8, 8}];
Clear[e];

A rectangular Hyperbola is a Hyperbola with essentricity Sqrt[2] and its asymptotes are mutually perpendicular.

A simple Cartesian equation for it is  y = 1/x.

Rectangular hyperbola have the property that when streched along one or both of its asymptotes, the curve remain the same. That is, the curve
{t, 1/t n}, {t n, 1/t}, and {t, 1/t} Sqrt[n] are the same curve with various degrees of magnification.

(*streching along a horizontal axis do not change the curve*)
ParaPlot[
	Table[{t, i 1/t}, {i,1,20,5}],
	{t,-10,10},
	PlotStyle->{Hue[0], Hue[.65], Hue[.35]},
	PlotRange->{{-1,1}, {-1,1}} 10,
	AspectRatio->Automatic
];

(*streching along a vertical axis do not change the curve*)
ParaPlot[
	Table[{i t, 1/t}, {i,1,20,5}],
	{t,-12,12},
	PlotStyle->{Hue[0], Hue[.65], Hue[.35]},
	PlotRange->{{-1,1}, {-1,1}} 10,
	AspectRatio->Automatic
];

Clear[n]; n = 2;

ParaPlot[
	{ {t, n 1/t}, {n t, 1/t}, {t, 1/t} Sqrt[n]},
	{t,-12,12},
	PlotStyle->{
		{Hue[.65], Thickness[.007]},
		{Hue[.0], Thickness[.007], Dashing[{.05,.1}]},
		{Hue[.35,.5,.9], Thickness[.007], Dashing[{.025,.1}]}
	},
	PlotRange->{{-1,1}, {-1,1}} 10,
	AspectRatio->Automatic
]; Clear[n]

Point-wise construction:
This method is derived from the paramteric formula for hyperbola {a Sec[t], b Tan[t]}, where a and b are the radii of the circles. If a == b, then the curve traced is rectangular hyperbola.

HyperbolaGenerator[{2,1},{0,1.25},
	LastFrameOnly->True,
	PlotRange->{{-2,7},{-2,6}},
	Ticks->{Range[-10,10,2], Range[-10,10,2]}
];

HyperbolaGenerator[{1,1},{0,1},
	LastFrameOnly->False,
	PlotRange->{{-1,2},{-1,2}},
	Ticks->{Range[-2,2], Range[-2,2]}
];

HyperbolaGenerator[{1,2},{0,1.25},
	LastFrameOnly->True,
	PlotRange->{{-.6,3.5},{-.6,6.5}}
];

Light rays coming from one focus will be refracted to the other focus.

(* catacaustic and diacaustic of a hyperbola at focus *)
Clear[hyperbolaGP]

hyperbolaGP = First@ ParametricPlot[
	Evaluate@ Hyperbola[2.5][t],
	{t, 0.0001, Pi/2, Pi, 3/2 Pi, 2 3.14},
	AspectRatio->Automatic,
	PlotRange->{{-3,5},{-4,4}}
];

ParaPlot[ Hyperbola[2.5][t], {t, 0, 2 3.14, 6.28/50},
	CausticLineLength->40, CausticOrigin->{2.5, 0},
	PlotDot->False,
	PlotCurve->False,
	CausticLineStyle->Table[Hue@i,{i,0,1,1/50}],
	Background->GrayLevel[0],
	AspectRatio->Automatic,
	PlotRange->{{-3,5},{-4,4}},
	Axes->False,
	Epilog->{{GrayLevel[1], Thickness[.008],hyperbolaGP},
		{Hue[0], PointSize[.02], Point[{-2.5,0}]}
	}
];

ParaPlot[ Hyperbola[2.5][t], {t, 0, 2 3.14, 6.28/50},
	CausticLineLength->-40, CausticOrigin->{2.5, 0},
	PlotDot->False,
	PlotCurve->False,
	CausticLineStyle->Table[Hue@i,{i,0,1,1/50}],
	Background->GrayLevel[0],
	AspectRatio->Automatic,
	PlotRange->{{-5,3},{-4,4}},
	Axes->False,
	Epilog->{{GrayLevel[1], Thickness[.008],hyperbolaGP}}
];

Clear[hyperbolaGP]

The Pedal of a Hyperbola with respect to a focus is a circle.

Clear[e, hyperbolaGP];
e = 1.8;

hyperbolaGP = First@ ParametricPlot[
	Evaluate@ Hyperbola[e][t],
	{t, 0.0001, Pi/2, Pi, 3/2 Pi, 2 3.14},
	DisplayFunction->Identity
];

ParaPlot[ Hyperbola[e][t],
	{t, -3.1416,3.1416, (2 3.1416)/50},
	PedalPoint->{e,0}, PlotDot->False,
	PlotCurve->False,
	LineStyle->{RGBColor[Random[],Random[], Random[]]},
	AspectRatio->Automatic,
	Axes->False,
	PlotRange->{{-1,1},{-1,1}} 2,
	Epilog->{{Hue[0], Thickness[.008], hyperbolaGP},
		{Hue[.7], PointSize[.02], Point[{-e,0}]}
	}
];

ParaPlot[ 
	{ Hyperbola[e][t], Pedal[ Hyperbola[e][t], t, {e,0}] },
	{t, -3.14,3.14},
	PlotStyle->{{Hue[.65]}, {Hue[.0], Thickness[.007]}},
	PlotRange->{{-1,1},{-1,1}} 2,
	AspectRatio->Automatic
];

Clear[e, hyperbolaGP];

The Pedal of a rectangular Hyperbola with respect to center is Lemniscate of Bernoulli.

Clear[e, hyperbolaGP];
e = Sqrt[2];

hyperbolaGP = First@ ParametricPlot[
	Evaluate@ Hyperbola[e][t],
	{t, 0.0001, Pi/2, Pi, 3/2 Pi, 2 3.14},
	DisplayFunction->Identity
];

ParaPlot[ Hyperbola[e][t], {t, -3.14,3.14, 6.18/40},
	PedalPoint->{0,0}, PlotDot->False,
	PlotCurve->False,
	LineStyle->{RGBColor[Random[],Random[], Random[]]},
	AspectRatio->Automatic,
	Axes->False,
	PlotRange->{{-1,1},{-1,1}} 1.8,
	Epilog->{{Hue[0], Thickness[.008], hyperbolaGP},
		{Hue[.7], PointSize[.02], Point[{-e,0}], Point[{e,0}]}
	}
];

Clear[e, hyperbolaGP];

ParaPlot[ 
	{ Hyperbola[Sqrt[2]][t], Pedal[ Hyperbola[Sqrt[2]][t], t, {0,0}] },
	{t, -3.14,3.14},
	PlotStyle->{{Hue[.65]}, {Hue[.0], Thickness[.007]}},
	PlotRange->{{-1,1},{-1,1}} 2,
	AspectRatio->Automatic
];

The Inverse of a rectangular Hyperbola with respect to its center is also a Lemniscate of Bernoulli.

ParaPlot[ Hyperbola[ Sqrt[2] ][t], {t, 0, 2 Pi,.1},
	InversionCircle->{{0,0},1},
	PlotCurve->False,
	PlotRange->{{-1,1},{-1,1}}2,
	AspectRatio->Automatic
];

ParaPlot[ 
	{ Hyperbola[Sqrt[2]][t], Inversion[ Hyperbola[Sqrt[2]][t], {{0,0},1}] },
	{t, -3.14,3.14},
	PlotStyle->{{Hue[.65]}, {Hue[.0], Thickness[.007]}},
	PlotRange->{{-1,1},{-1,1}} 2,
	AspectRatio->Automatic
];

Rectangular hyperbola inverts into Strophoid with respect to its vertex.

(* Inversion point at the hyperbola's vertex *)
ParaPlot[
	Hyperbola[ Sqrt[2]][t], {t,-Pi, Pi-.0001, 2 Pi/(4 15)},
	InversionCircle->{{1,0},2},
	PlotDot->False,
	CurveColorFunction->{Hue[.75,.7,1]&},
	CurveStyle->{Thickness[.007]},
	PlotRange->{{-3,3},{-3,3}},
	AspectRatio->Automatic
];

Its Inverse with respect to a focus is a looped Limacon of Pascal.
(see Limacon of Pascal)

Clear[e]; e = 1.7;

ParaPlot[ Hyperbola[e][t], { t, 0, 2 Pi, 2 Pi/80},
	InversionCircle->{{e, 0}, e},
	PlotCurve->False, DotStyle->{{Hue[0], PointSize[.008]}},
	AspectRatio->Automatic,
	PlotRange->{{-1,1},{-1,1}} 2.1 e,
	Epilog->{Hue[0.65],PointSize[.02],Point[{e,0}]}
];

ParaPlot[ 
	{ Hyperbola[e][t], Inversion[ Hyperbola[e][t], {{e,0}, e}] },
	{t, -3.14,3.14},
	PlotStyle->{{Hue[.65]}, {Hue[.0], Thickness[.005]}},
	PlotRange->{{-1,1},{-1,1}} 2.1 e,
	AspectRatio->Automatic
];

Clear[e];