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

Parabola

Definition & Generation

Parabola is a special case of Conic Sections. (See Conic Sections).
Parabola is commonly defined as the locus of points P such that the distance from a line (called directrix) to P is equal to the distance from P to a fixed point F. F is called the focus.

Parametric Formula: {t, 1/4 t^2}.
Cartesian equation: y == 1/4 x^2.

Vertex: {0,0}. Focus: {1, 0}.
Essentricity = 1.

Parabola is NOT a family of curves like Ellipse or hyperbola. There is only ONE shape of Parabola (like circle or line).

Parabola have the property that when scaled (streching/shrinking) along a direction parallel or perpendicular to its axis, the curve remain unchanged.
(for example, Line also have this property, whereas a squashed circle is no longer a circle)

When streched along the directrix and axis by factors of {a,b} respectively, the resulting curve is the same as the parabola scaled in both direction by a^2/b.

Given a parabola {xf[t], yf[t]} with vertex at Origin and focus along the y-axis, it's focus is {0, xf[t]^2/(4 yf[t]) }.

Clear[a,b,gp1,gp2];
{a,b}={3,2};
gp1=ParametricPlot[Evaluate[Parabola[][t] {a,b}],{t,-5,5},PlotStyle->{Hue[.5],Thickness[.007]},AspectRatio->Automatic];
gp2=ParametricPlot[Evaluate[((Parabola[][t] (a^2))/b)],{t,-5,5},PlotStyle->{{Hue[.0],Thickness[.007],Dashing[{.05,.05}]}},AspectRatio->Automatic];
Show[gp1,gp2,PlotRange->(({{-3,3},{-.05,2.5}} (a^2))/b)];
Clear[a,b,gp1,gp2];

Cutting Tangents

A set of tangent lines on the parabola will cut any other tangent line into the same proportion.

Observe that the red lines cut any of the green lines into segments of the same propotion, and vice versa for green lines on red lines.

ParaPlot[  Parabola[][t] , {t,-10,10,.5},
	TangentLineLength->100,
	PlotRange->{{-1,1} 3,{-3,2}} 1.5,
	PlotDot->True, CurveStyle->{Thickness[.007]},
	TangentLineStyle-> Join[
		Table[ Hue[0], {20}],
		Table[ Hue[.3,1,.5], {21}]
	],
	Axes->False
];

This property gives a nice way to draw parabola by envelopes.

Starts with two non-parallel lines L and M with even spaced markings on each line, then connect the 1st marking on L to last marking on M, connect the 2nd marking on L to the 2nd to last marking on M, and etc. (think of L and M as one of the Red and Green lines in previous graphics).

Clear[v];
v = {2,2};
(* try {2,1}, {1,5}, {-2,2}*)

Show[
	Graphics[{
		RGBColor[Random[],Random[], Random[]],
		MapThread[
			Line[{#1,#2}]&,
			{	Table[ i v/Sqrt[v.v], {i,20}] ,
				Table[ {i,0}, {i, 20,1,-1}]
			}
		],
		Hue[0], Thickness[.007],
		Line[{{0,0}, v/Sqrt[v.v] 20}],
		Line[{{0,0},{1,0} 20}]
	}], Axes->False,
	AspectRatio->Automatic
]; Clear[v]

Specifically, the Envelope of Lines with a positive constant sum of intercepts is a segment of Parabola. Note that the x and y axis need not be perpendicular to each other.

Clear[gp1, gp2, gp3, gp4, gp5];
gp1 = Table[ Line[{{i,0},{0,1-i}}], {i,0,1,.1}];
gp2 = (gp1 /. Line[{p1_,p2_}]->Line[{-p1,p2}]);
gp3 = (gp1 /. Line[{p1_,p2_}]->Line[{-p1,-p2}]);
gp4 = (gp1 /. Line[{p1_,p2_}]->Line[{p1,-p2}]);

gp5 = Table[ {Point[{i,0}], Point[{0,i}]}, {i,-1,1,.1} ];

Show[
	Graphics[{
		Hue[.65,1,1],gp1, gp2, gp3, gp4, 
		PointSize[.01],Hue[0.65], gp5
	}],
	Axes->False,
	AspectRatio->Automatic
];

gp1 = Table[ Line[{{t,t},{-2+t,2-t}}], {t,0,2,.2}];
gp2 = (gp1 /. Line[{p1_,p2_}]->Line[{-p1,p2}]);
gp3 = (gp1 /. Line[{p1_,p2_}]->Line[{-p1,-p2}]);
gp4 = (gp1 /. Line[{p1_,p2_}]->Line[{p1,-p2}]);

ParaPlot[  Parabola[][t] +{0,1}, {t,-5,5},
		PlotDot->False,
		CurveStyle->{Thickness[.007]},
		CurveColorFunction->{Hue[.7]&},
		PlotRange->{{-3,3},{-2,3}},
		AspectRatio->Automatic,
		Axes->False,
	Prolog->{ Hue[.0], gp1, gp2, gp3, gp4}
];

Clear[gp1, gp2, gp3, gp4, gp5];

t

Inversion of Parabola

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

ParaPlot[ Parabola[][t], { t, -10,10, .1},
	InversionCircle->{{0,1},2},
	PlotCurve->False, DotStyle->{{Hue[0], PointSize[.009]}},
	AspectRatio->Automatic,
	PlotRange->{{-4,4},{-3,4}},
	Epilog->{Hue[0.65],PointSize[.02],Point[{0,1}]},
	Axes->False
];

Its Inverse with respect to its vertex is a Cissoid of Diocles.

ParaPlot[ Parabola[][t], { t, -20,20, .1},
	InversionCircle->{{0,0},3},
	PlotCurve->False, DotStyle->{{Hue[0], PointSize[.009]}},
	AspectRatio->Automatic,
	PlotRange->{{-4,4},{-3,4}},
	Epilog->{Hue[0.65],PointSize[.02],Point[{0,0}]},
	Axes->False
];

Graphics gallery

Title Graphics

Clear[NegativePedalPlot, unitV]

unitV[v_]:= v/Sqrt[v.v]

NegativePedalPlot::usage = "NegativePedalPlot[{xf,yf},{min,max,step},
	{x0,y0}] draws the negative pedal lines of the parametric curve
	{xf,yf} at points {xf,yf}& /@ Range[min,max,step].
	xf and yf must be pure functions with head Function.
	This is a quick hack function written for experienced
	Mathematica users.
	Example:
	NegativePedalPlot[{Cos@#&, Sin@#&}, {0,2 Pi, 2 Pi/30},{.8,0}]";

NegativePedalPlot[{xf_Function,yf_Function},
	{tmin_,tmax_, dt_}, {a_,b_}, opts___Rule]:=
	Module[{curvePoints, curvePointsGP,pedalPointGP,
		linesToCurveGP, negativePedalLinesGP},
		curvePoints = N@ {xf@ #,yf@ #}& /@ Range[tmin,tmax,dt];
		curvePointsGP = {Hue[0],PointSize[.02], Point[#]}& /@ curvePoints;
		pedalPointGP = {Hue[.7], PointSize[.02], Point[{a,b}]};
		linesToCurveGP = N@ Line[{{a,b},#}]& /@ curvePoints;
		negativePedalLinesGP = Line[{
				100 Reverse[unitV[N[#-{a,b}]]{1,-1}] +#,
				-100 Reverse[unitV[N[#-{a,b}]]{1,-1}] +#
			}]& /@ curvePoints;
		Show[
			Graphics[{negativePedalLinesGP,
				curvePointsGP, pedalPointGP}],
				opts
		]
	]

"fish"

NegativePedalPlot[{#&,1/4 #^2&}, {-7,7,.25},{0,1},
Axes->True,
AspectRatio->Automatic,PlotRange->{{-7,7},{-1,18}}];

"crescent"

NegativePedalPlot[{#&,1/4 #^2&}, {-13,15,28/60},{17,10},
	Axes->True,
	AspectRatio->Automatic,
	PlotRange->{{-22,30},{-30,40}}
];