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

Conic Sections

Definition

Hyperbola, ellipse, and parabola are together known as conic sections, or just conics. So called because they are the intersections of a right circular cone and a plane.

Conics can be defined as follows:
Given a line D (directrix) and a point F (focus) not on D, conics is the locus of points P such that: the distance from P to F divided by the distance from P to D is a constant (called the eccentricity). That is,
PF = e PD.

Let the essentricity be e. Let the point F be the Origin. Let the directrix be a vertical line k units to the right of Origin.

Parametric formula: e k/(1 + e Cos[t]) {Cos[t], Sin[t]}.
Polar equation: r == k e / (1 +e Cos[theta]).

The distance k from the focus to directrix only effect the curve's scaling.
The essentricity e changes the curve's shape.
If e < 1, it is an Ellipse, e == 1 is a Parabola, e > 1, Hyperbola.

ParaPlot[
	{Conics[.6][t], Conics[1][t], Conics[2][t]},
	{t,0.001, 2*3.14},
	AspectRatio->Automatic,
	PlotStyle->{Hue[0],Hue[.65],Hue[.35,1,.6]},
	Epilog->{Hue[.0,1,.7], Thickness[.007], Line[{{1,-10},{1,10}}]}
];

Intersection of circles

The intersections of circles centered at F1 and F2 whoes radii are arithmetic sequence {r, r+c, r+2 c,...}, are points on hyperbolas and ellipse with focus F1, F2.

This can be easily seen by looking at the definition of hyperbola and ellipse as the difference or sum of distances from foci.

One can drop two stones into a pond one after the other, then observe the intersections of the outmost ripple tracing out one branch of hyperbola.

Clear[c, ellipsesGP, hyperbolasGP, ripplesGP];
c = 4; (* try c = 2, c = 10 *)

ripplesGP = 
Table[ {Circle[{-c,0},i],Circle[{c,0},i]},{i, 3 c}];

ellipsesGP = First@ ParametricPlot[
	Evaluate@ Table[{i Cos[t], Sqrt[i^2-c^2] Sin[t]}, {i,c+1,-2+3 c}],
	{t, 0, 2 Pi},
	PlotStyle->Automatic,
	DisplayFunction->Identity
];

hyperbolasGP = First@ ParametricPlot[
	Evaluate@ Table[{a Sec[t], Sqrt[c^2-a^2] Tan[t]}, {a,c-1}],
	{t, 0.01,Pi/2, 3/2 Pi, 6.28},
	PlotStyle->Automatic,
	DisplayFunction->Identity
];

Show[
	Graphics[{
		Hue[0], hyperbolasGP,
		Hue[.65], ripplesGP
	}],
	PlotRange->{{-1,1} , {-1,1} } 3 c,
	AspectRatio->Automatic
];

Show[
	Graphics[{
		Hue[0], ellipsesGP,
		Hue[.65], ripplesGP
	}],
	PlotRange->{{-1,1} , {-1,1} } 3 c,
	AspectRatio->Automatic
];

Show[
	Graphics[{
		{RGBColor[Random[],Random[], Random[]], hyperbolasGP},
		{RGBColor[Random[],Random[], Random[]], ellipsesGP},
		{RGBColor[Random[],Random[], Random[]], ripplesGP}
	}],
	PlotRange->{{-1,1} , {-1,1} } 3 c,
	AspectRatio->Automatic
];

Show[
	Graphics[{
		{RGBColor[Random[],Random[], Random[]], hyperbolasGP},
		{RGBColor[Random[],Random[], Random[]], ellipsesGP}
	}],
	PlotRange->{{-1,1} , {-1,1} } 3 c,
	AspectRatio->Automatic
];

Clear[c, ellipsesGP, hyperbolasGP, ripplesGP];

Orthogonal conics

Last set of graphics also shows that confocal ellipses and hyperbolas are mutually orthogonal.

Two sets of parabolas sharing the same focus and axis but opposite in opening are mutually orthogonal too.

Clear[curves];
curves = Join[
	Table[ Conics[1][t] i, {i,1,60,5}],
	Table[ Conics[1][t] {-1,1} i, {i,1,60,5}]
];

ParametricPlot[
	Evaluate[ curves ],
	{t,0.001, 2*3.14},
	PlotRange->{{-1,1},{-1,1}}25,
	PlotStyle->Join[
		Table[ Evaluate@ Hue[Random[],1,.7], {Length[curves]/2}],
		Table[ Evaluate@ Hue[Random[],1,.7], {Length[curves]/2}]
	],
	AspectRatio->Automatic
];

Graphics Gallery

conic sections with different eccentrity

Clear[ curvesGP, curvesGP1, curvesGP2]

curvesGP1 = (First@ ParametricPlot[
	Evaluate@ Conics[#][t],
	{t,.0001, 2 3.1415},
	DisplayFunction->Identity
])& /@ Range[0,1,.2];

curvesGP2 = (First@ ParametricPlot[
	Evaluate@ Conics[#][t],
	{t,0, ArcCos[-1/#], 2 Pi-ArcCos[-1/#], 2 Pi},
	DisplayFunction->Identity
])& /@ Range[1.5,3,.5];

curvesGP = Join[curvesGP1,curvesGP2];

curvesGP = Transpose[{
	Table[Hue[i], {i,0,1,1/(Length@ curvesGP-1)}],
	curvesGP
}];

Show[
	Graphics[{
		curvesGP,
		GrayLevel[1], Thickness[.008], Line[{{1,-100},{1,100}}]
	}],	
	AspectRatio->Automatic,
	Axes->False,
	Frame->True,
	Background->GrayLevel[0],
	GridLines->{Range[-5,5], Range[-3,3]},
	PlotRange->{{-5,5},{-1,1}3}
];