Note

This Mathematica notebook is from the WWW project A Visual Dictionary of Special Plane Curves. Copyright © 1995-2002 by Xah Lee. (http://xahlee.org/)

Packages and Initializations

Needs["ParaPlot`"]
Needs["PlaneCurveFormulas`"]
Needs["PlaneCurveGenerator`"]

$HistoryLength = 5;

Needs["Graphics`ImplicitPlot`"]

Clear[RandomRGBColorFunctionGenerator]

RandomRGBColorFunctionGenerator::usage= "
RandomRGBColorFunctionGenerator[] returns a pure function of the form
RGBColor[a,b,c]&, where any of a,b,c could be a Slot[] or a number
between 0 to 1, and at least one of them is a Slot[].";

RandomRGBColorFunctionGenerator[] :=
Module[{f,a=Random[],b=Random[]},
	f[
		RotateRight[
			RGBColor[
				If[a>.5,#, Random[]],
				If[b>.5,#, Random[]],
				If[(a+b)<1.,#, Random[]]
			], Random[Integer,{1,3}]
		]
	] /. f->Function
];

Archimedean Spiral

Definition

Archimedean spiral is defined by the polar equation r == theta^n. Special names are given for some value of n.

n == 1: r == theta, Archimedes' spiral.
n== 1/2: r == Sqrt[theta], parabolic or Fermat's spiral.
n== -1: r theta = 1, hyperbolic, reciprocal spiral.
n== -1/2, r Sqrt[theta] == 1, Lituus.

ParaPlot[ArchimedeanSpiral[1][t], {t, 0, 10 2 π}, 
        PlotDot -> False, AspectRatio -> Automatic, 
        PlotLabel -> "Archimedes' spiral, r == theta", 
        Ticks -> {Range[0, 60, 20], Range[0, 60, 20]}, 
        Background -> GrayLevel[0]];

ParaPlot[ ParabolicSpiral[][t],
	{t, 0, 10 *2 Pi},
	PlotDot->False,
	AspectRatio->Automatic,
	PlotLabel->"Fermat's spiral, r == Sqrt[theta]",
	Background->GrayLevel[0],
	Ticks->{Range[0,8,2], Range[0,8,2]}
];

ParaPlot[ HyperbolicSpiral[][t], {t, 0.38, 10 *2 Pi},
	PlotDot->False,
	PlotRange->{{-.6,2},{-.5,1}},
	Ticks->{{-.4, 1,2},{-.4, 1}},
	AspectRatio->Automatic,
	Background->GrayLevel[0],
	Epilog->{Text["reciprocal\nspiral\nr == 1/theta", {1,.4}]}
];

ParaPlot[ Lituus[][t], {t, .01, 10 2 Pi},
	PlotDot->False,
	AspectRatio->Automatic,
	PlotPoints->300,
	PlotRange->{{-.6,3},{-.5,1}},
	Ticks->{{-.4, 1,2},{-.4, 1}},
	Background->GrayLevel[0],
	Epilog->{Text["lituus\nr == 1/Sqrt[theta]", {1,.3}]}
];

The following cell generates an animation of r == theta^(n) with n going from -1 to 0, in 10 frames.

(* Archimedes' Spiral *)

Do[
	ParaPlot[
		Evaluate@ ArchimedeanSpiral[i][t],
		{t, .0001, 5 *2 Pi},
		PlotDot->False,
		PlotPoints->30,
		AspectRatio->Automatic,
		PlotRange->{ {-1.1, 2.5}, {-1,1}1.1},
		PlotLabel->StringForm[ "r == theta^``", PaddedForm[ N@ i, {4,2}]],
		Ticks->{Range[-2, 3,1], Range[-2, 2,1]},
		Background->GrayLevel[0]
	],
	{i, -1, 0, 1/10}
]

The following cell generates an animation of r == theta^(n) with n going from 0 to 2, in 20 frames.

(* Archimedes' Spiral *)

Do[
	ParaPlot[
		Evaluate@ ArchimedeanSpiral[i][t],
		{t, .0001, 5*2 Pi},
		PlotDot->False,
		PlotPoints->30,
		AspectRatio->Automatic,
		PlotRange-> {{-1,1}, {-1,1}} (5 2 Pi)^i 1.1,
		PlotLabel->StringForm[ "r == theta^``", PaddedForm[ N@ i, {4,2}]],
		Ticks->{{N@ Floor[(4 2 Pi)^i]},{N@ Floor[(4 2 Pi)^i]}},
		Background->GrayLevel[0]
	],
	{i, 0, 2, 2/20}
]

Properties

The Inverse of an Archimedean spiral is another Archimedean spiral.

Inversion[ArchimedeanSpiral[n][t], {{0, 0}, a}]

Lituus and Archimedes' spiral, inversion of each other with respect to the circle of radius 1 at origin.

ParaPlot[{ArchimedeanSpiral[1][t], ArchimedeanSpiral[-1][
            t]}, {t, 0, 2*  π, 2*Pi/30}, 
        InversionCircle -> {{0, 0}, 1}, 
        AspectRatio -> Automatic];

ParaPlot[ArchimedeanSpiral[-1][t], {t, 0, 2*  π, 
          2*Pi/30}, InversionCircle -> {{0, 0}, 1}, 
        AspectRatio -> Automatic];

ParaPlot[ArchimedeanSpiral[1][t], {t, 0,  2 π, 2*Pi/15}, 
        InversionCircle -> {{0, 0}, 1}, AspectRatio -> Automatic, 
        PlotParameterValue -> True];

parabolic spiral inverts into Lituus.

ParaPlot[ ArchimedeanSpiral[1/2][t],
	{t,0, 3 *2 Pi, 3 2 Pi/80},
	InversionCircle->{{0,0},5},
	PlotDot->False, CurveStyle->Thickness[.008],
	PlotRange->All, AspectRatio->Automatic];

Clear[li, num, minn, maxx, litussPoints, 
        archiCurvePoints];
num = 100;
minn =  .03;
maxx = 3*2*Pi;
li = 
        Range @@ {minn, 
            maxx, ((maxx - minn)/num)};
litussPoints = 
        Transpose[{Table[Hue[0, x,  .9], {x, 0, 1, 1/num}], 
            Point /@ (ArchimedeanSpiral[(1/2)][#] & /@ 
                  li)}];
archiCurvePoints = 
        Transpose[{Table[Hue[ .7, x,  .9], {x, 0, 1, 1/num}], 
            Point /@ ((Inversion[ArchimedeanSpiral[(1/2)][#], {{0, 
                            0}, 5}]) & /@ li)}];

Show[
        Graphics@{litussPoints, 
            archiCurvePoints, {Hue[ .2], Circle[{0, 0}, 5]}}, 
        AspectRatio -> Automatic, 
        PlotRange -> {{-17, 65}, {-14, 24}}, Frame -> True, 
        Background -> GrayLevel[0]];

curvature

?Curvature

Curvature[ArchimedeanSpiral[1][t], t] // Simplify

% // Simplify

Plot[((2 + (t^2))/(((1 + (t^2)))^(3/2))), {t, 0, 5}, 
      AspectRatio -> Automatic]