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`"]
Needs["PlaneCurveFormulas`"]
Needs["PlaneCurveGenerator`"]

Trisectrix of Maclaurin

Definition

This is a curve Colin Maclaurin (1698-1746) used to trisect an angle.

ParaPlot[
        Rotate[TrisectrixOfMaclaurin[][t], -(Pi/2)], {t, -5, 
          5}, AspectRatio -> Automatic, 
        CurveStyle -> {Thickness[ .007]}, 
        CurveColorFunction -> {Hue[ .65,  .8,  .8] &}];

Properties

It is the Pedal of Parabola with repect to its focus reflect by the directrix.

\(\(ParaPlot[\(Parabola[]\)[t], {t, \(-10\), 10, 
20/60}, 
        PedalPoint -> {0, \(-3\)}, 
        CurveStyle -> {Thickness[ .007]}, 
        DotStyle -> {{Hue[0], PointSize[ .007]}}, PlotDot -> False, 
        Axes -> False, GridLines -> Automatic, 
        PlotRange -> {{\(-4\), 4}, {\(-4\), 2.5}}, 
        AspectRatio -> Automatic, 
        Prolog -> {Hue[ .35, 1,  .8], Thickness[ .007], 
            Line[{{\(-5\), \(-1\)}, {5, \(-1\)}}], Hue[ .65], 
            PointSize[ .02], Point[{0, 1}]}];\)\)

Trisecting an angle.
Let P be any point on the loop of the curve.
The green angle formed by {-3,0}, {-2,0}, p is three times as large as the red angle {-2,0}, {0,0}, p.

Clear[p]; 
Do[
        ParametricPlot[
          Evaluate[TrisectrixOfMaclaurin[][t]], {t, -4, 4}, 
          AspectRatio -> Automatic, PlotStyle -> {Hue[ .65]}, 
          PlotRange -> {{-3, 1}, {-2.3, 2.5}} 1.05, 
          Ticks -> {Range[-5, 5], Range[-5, 5]}, 
          Epilog -> {p = TrisectrixOfMaclaurin[][theta]; {Hue[ .35, 
                  1,  .7], Thickness[ .007], 
                Line[{{-3, 0}, {-2, 0}, p}]}, {Hue[0], 
                Thickness[ .007], 
                Line[{{-2, 0}, {0, 0}, p}]}, {Hue[ .35, 1,  .7], 
                PointSize[ .02], Point[{-2, 0}]}, {Hue[0], 
                PointSize[ .02], Point[{0, 0}]}, {Hue[ .65], PointSize[ .02], 
                Point[p], Text["P", p, {2, 2}]}}], {theta, 
          0.1, (Sqrt[3]) - 0.1,  .5}];
Clear[p];

Graphics Gallery

Graphics Gallery

Caustic

Clear[curves]
Do[ParaPlot[
        Rotate[TrisectrixOfMaclaurin[][
            t], -(π/2)], {t, -4, 4,  .2}, 
        CausticLineLength -> 50, CausticOrigin -> {0, i}, 
        CurveColorFunction -> {GrayLevel[1] &}, 
        AspectRatio -> Automatic, 
        PlotRange -> {{-1, 1} 3.3, {-2.3, 3.1}}, 
        Background -> GrayLevel[0], Axes -> False], {i, 
        1.1, -2, -1}]

Parallels

Clear[curves]
curves = 
      Parallel[Rotate[TrisectrixOfMaclaurin[][t], -(π/2)], t, 
        Range[-3, 2,  .2]]; 
ParaPlot[curves, {t, -8, 8}, 
      PlotStyle -> 
        Table[Hue[0, 1 - i,  .8], {i, 0, 1, (1/Length)[curves]}], 
      AspectRatio -> Automatic, 
      PlotRange -> {{-1, 1} 8, {-1, 1} 6}, 
      Background -> GrayLevel[0], Axes -> False];

Evolutes

ParaPlot[
      Rotate[TrisectrixOfMaclaurin[][
          t], -(π/2)], {t, -1.5, 1.5}, 
      ArcLengthPartition[
        Rotate[TrisectrixOfMaclaurin[][
            t], -(π/2)], {t, -1.3, 1.3}, 37], 
      PlotOsculatingCircle -> True, PlotCurve -> True, 
      PlotDot -> False, CurveColorFunction -> {Hue[0] &}, 
      CurveStyle -> {Thickness[ .007]}, AspectRatio -> Automatic, 
      PlotRange -> {{-1, 1} 8, {-1.5, 8}}, 
      PlotStyle -> Table[Hue[i], {i, 0, 1, (1/20)}], 
      Background -> GrayLevel[0], Axes -> False];

ParaPlot[
      Rotate[TrisectrixOfMaclaurin[][
          t], -(π/2)], {t, -1.5, 1.5, (2.8/70)}, 
      NormalLineLength -> 100, PlotOsculatingCircle -> False, 
      PlotCurve -> True, PlotDot -> False, 
      CurveColorFunction -> {Hue[0] &}, 
      CurveStyle -> {Thickness[ .004]}, AspectRatio -> Automatic, 
      Axes -> False, Background -> GrayLevel[0], 
      PlotRange -> {{-1, 1} 3.3, {-1, 1} 2.3} 2];

ParaPlot[
      Rotate[TrisectrixOfMaclaurin[][
          t], -(π/2)], {t, -1.5, 1.5, (2.8/70)}, 
      PlotEvolute -> True, PlotCurve -> True, 
      PlotDot -> False, CurveColorFunction -> {Hue[0] &}, 
      CurveStyle -> {Thickness[ .004]}, AspectRatio -> Automatic, 
      Axes -> False, Background -> GrayLevel[0], 
      PlotRange -> {{-1, 1} 3.3, {-1, 1} 2.3} 2];

Ploting the evolute of witch of Agnesi. We use DeleteLongLine defined at the top of this notebook to get rid of the asymptotes.

Clear[ witchGP, witchEvoluteGP, gp]

witchGP = First@ ParametricPlot[
	Evaluate@ Rotate[ TrisectrixOfMaclaurin[][t], -Pi/2],
	{t, -1.5, 1.5},
	AspectRatio->Automatic,
	PlotRange->{{-1,1} 3.3,{-1,1} 2.3} 2,
	DisplayFunction->Identity
];

witchEvoluteGP = First@ ParaPlot[
	Evolute[Rotate[ TrisectrixOfMaclaurin[][t], -Pi/2],t],
	{t, -1.5, 1.5},
	PlotCurve->True,
	PlotDot->False,
	CurveColorFunction->{Hue[0]&},
	AspectRatio->Automatic,
	PlotRange->{{-1,1},{-1,1} } 8,
	DisplayFunction->Identity
];

witchEvoluteGP = DeleteLongLine[witchEvoluteGP, 70];

Show[
	Graphics[{
		{Hue[.7], witchGP},
		witchEvoluteGP
	}],
	AspectRatio->Automatic,
	Axes->False,
	PlotRange->{{-1,1},{-1,1}} 8
];

Radial

ParaPlot[
		Rotate[ TrisectrixOfMaclaurin[][t], -Pi/2],
		{t, -1.5,1.5, .1},
		PlotRadial->True,	
		AspectRatio->Automatic,
		PlotRange->{{-1,1} 3.3,{-2.3,1.5}},
		Background->GrayLevel[0],
		Axes->False
];

ParametricPlot[
		Evaluate[{
			Rotate[ TrisectrixOfMaclaurin[][t], -Pi/2],
			Radial[ Rotate[ TrisectrixOfMaclaurin[][t], -Pi/2], t]
		}],
		{t, -1.5,1.5},
		AspectRatio->Automatic,
		PlotRange->{{-1,1},{-1,1}}5,
		PlotStyle->{Hue[.75], Hue[0],Hue[.35,1,.7]}
];

Conchoids

ParaPlot[
	Rotate[ TrisectrixOfMaclaurin[][t], -Pi/2],
	{t, -1.3, 1.3, 2.6/25},
	ConchoidSetting->{{0,0},Range[0,4,.2]},
	PlotCurve->False,
	PlotDot->False,
	CurveColorFunction->{GrayLevel[1]&},
	DotStyle->Table[{PointSize[.015], Hue[i]}, {i,.5,1,1/60}],
	AspectRatio->Automatic,
	Axes->False,
	Background->GrayLevel[0],
	PlotRange->{{-1,1} 3.3,{-1,3.3}}
];

ParaPlot[
	Rotate[ TrisectrixOfMaclaurin[][t], -Pi/2],
	{t, -1.42, 1.4},
	ArcLengthPartition[Rotate[ TrisectrixOfMaclaurin[][t], -Pi/2], {t,-1.42,1.4}, 50],
	ConchoidSetting->{{1.3,10},Range[-6,6,.2]},
	PlotCurve->False,
	PlotDot->False,
	CurveColorFunction->{GrayLevel[1]&},
	DotStyle->Table[{PointSize[.015], Hue[i]}, {i,0,.5,1/60}],
	AspectRatio->Automatic,
	Axes->False,
	Background->GrayLevel[0],
	PlotRange->{{-1,1} 3.3,{-1,1} 2.3}
];

Clear[curves]

curves =
	Conchoid[ Rotate[ TrisectrixOfMaclaurin[][t], -Pi/2], {0,-.95}, Range[-2,2,4/8]];

ParaPlot[
	curves,
	{t, -1.5, 1.5},
	AspectRatio->Automatic,
	Axes->False,
	PlotStyle->Table[Hue[i], {i,.6,1,(1-.6)/(Length@ curves/2)}],
	Background->GrayLevel[0],
	PlotRange->{{-1,1} 6 ,{-1,1} 4}
];

Conchoid Movie

We want to make an animation of concohids of witch of Agnesi with respect to a point that moves along a certain curve.

In this animation, we choose the point to move along a parabola.

Clear[curves]

ParametricPlot[
	Evaluate[{
		Rotate[ TrisectrixOfMaclaurin[][t], -Pi/2],
		Rotate[Parabola[][t] {1,3}, 20 Degree]+ {-.8,-2.5}
	}],
	{t, -3,3},
	AspectRatio->Automatic,
	PlotRange->{{-1,1} 6 ,{-1,1} 3},
	PlotStyle->{Hue[.75], Hue[0],Hue[.35,1,.7]}
];

Clear[ pathCurve, pathCurvePoints]
	
pathCurve = N@ Rotate[Parabola[][t] {1,3}, 20 Degree]+ {-.8,-2.5};

pathCurvePoints = 
	(pathCurve /. t->#)& /@ ArcLengthPartition[ pathCurve, {t,-3,3}, 24];

Do[
	ParaPlot[
		Conchoid[ Rotate[ TrisectrixOfMaclaurin[][t], -Pi/2], pathCurvePoints[[i]], Range[-3,3,6/8]],
		{t, -1.5, 1.5},
		PlotPoints->50,
		AspectRatio->Automatic,
		Axes->False,
		PlotStyle->Table[Hue[j], {j,.6,1,(1-.6)/8}],
		Background->GrayLevel[0],
		PlotRange->{{-7,6} ,{-3.5,4}}
	],
	{i,1, Length@ pathCurvePoints,1}
]

Involute

Inversion

ParaPlot[
	Rotate[ TrisectrixOfMaclaurin[][t], -Pi/2],
	{t, -1.5,1.5, .1},
	InversionCircle->{{0,.5},1},
	AspectRatio->Automatic,
	PlotRange->{{-1,1},{-1,1}}3,
	Axes->True
];

Clear[curves]

curves = Table[ Inversion[Rotate[ TrisectrixOfMaclaurin[][t], -Pi/2], {{0,i},1}], {i,-1,1.6,.2}];

ParametricPlot[
	Evaluate@ curves,
	{t, -1.5, 1.5},
	AspectRatio->Automatic,
	PlotRange->{{-1,1},{-1,1}}3,
	PlotStyle->
		Table[ {Thickness[.008],Hue[.6,i,.8]}, {i,0,1,1/Length@ curves}],
	Background->GrayLevel[0],
	Frame->True,
	FrameTicks->{Range[-4,4],Range[-4,4]},
	Axes->False
];

Pedal

ParaPlot[
	Rotate[ TrisectrixOfMaclaurin[][t], -Pi/2],
	{t, -1.5,1.5, .1},
	PedalPoint->{1,-1},
	AspectRatio->Automatic,
	PlotRange->{{-1,1},{-1,1}}3,
	Axes->True
];

Clear[curves]

curves = Table[ Pedal[ Rotate[ TrisectrixOfMaclaurin[][t], -Pi/2], t, {0,i}], {i,-1,1.6,.2}];

ParametricPlot[
	Evaluate@ curves,
	{t, -1.5, 1.5},
	AspectRatio->Automatic,
	PlotRange->{{-1,1},{0 -.1,1.4}},
	PlotStyle->
		Table[ {Thickness[.007],Hue[.9,i,.8]}, {i,0,1,1/Length@ curves}],
	Frame->True,
	FrameTicks->{Range[-1,1,.5], Range[-1,1,.5]},
	Axes->False,
	Background->GrayLevel[0]
];