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`"](*0208-482*)

Needs["PlaneCurveGenerator`"](*0208-314*)

Needs["Graphics`ImplicitPlot`"](*0200-529 *)

$HistoryLength = 5;

Cardioid

description section

CardioidGenerator[{0, 5.7,  .05}, 
        LastFrameOnly -> True];

Cardioid[][t]

ParaPlot[Cardioid[][t], {t, 0, 2*π}, 
        AspectRatio -> Automatic];

a = 1;
ParaPlot[{Cos[t], Sin[t]} (1 + Cos[t]) 2 a, {t, 0, 6}, 
        PlotParameterValue -> True, 
        AspectRatio -> Automatic];

a = 1;
ImplicitPlot[(((-2 a x + (x^2) + (y^2)))^2) == ((x^2) + 
                (y^2)) 4 (a^2), {x, -1, 4}];

Properties

Evolute

The evolute of cardioid is another cardioid.

ParametricPlot[
        Evaluate[{Cardioid[][t], Evolute[Cardioid[][t], t]}], {t, 0, 
          2 π}, AspectRatio -> Automatic, 
        PlotStyle -> {Hue[ .75], Hue[0], 
            Hue[ .35, 1,  .7]}];

ParaPlot[Cardioid[][t], {t, 0, 2 π, ((2 π)/40)}, 
        CurveStyle -> Thickness[ .009], PlotEvolute -> True, 
        LineStyle -> {Hue[Random[], 1,  .8]}, 
        AspectRatio -> Automatic, Axes -> False];

ParaPlot[Cardioid[][t], {t, 0, 2 π, ((2 π)/40)}, 
        PlotEvolute -> True, PlotCurve -> False, 
        PlotOsculatingCircle -> True, 
        LineStyle -> {Hue[Random[], 1,  .8]}, 
        DotStyle -> {PointSize[ .015]}, 
        CurveStyle -> Thickness[ .009], AspectRatio -> Automatic, 
        Axes -> False];

ParaPlot[Cardioid[][t], {t, 0, 2 π, ((2 π)/40)}, 
        SecantConnection -> {8, 1}, NormalLineLength -> 5.3, 
        CurveStyle -> {Thickness[ .007]}, AspectRatio -> Automatic, 
        PlotRange -> {{-2.5, 4}, {-3.6, 3.6}}, 
        Axes -> False];

Caustic

Cardioid is the Catacaustic of a circle when the light source is on the circle.

ParaPlot[ {Cos[t],Sin[t]}, {t, 0, 2 Pi,2 Pi/(54)},
	CausticLineLength->5, CausticOrigin->{1,0},
	PlotDot->False, CurveColorFunction->{Hue[.7]&},
	AspectRatio->Automatic,
	PlotRange->{{-1.2,1.2},{-1.2,1.2}},
	Axes->False,
	Background->Hue[0,0,0],
	Epilog->{Hue[.18], PointSize[.03], Point[{1,0}]}
];

Envelope of circles

It is the Envelope of Circles with centers on a fixed circle C and each circle passing through a fixed point P on the fixed circle C.

Clear[centerPoints, circlesGP];
centerPoints = 
        Table[N[{Cos[i], 
              Sin[i]}], {i, -π, π, ((2 π)/30)}];
circlesGP = (Circle[#1, (Sqrt[(#1 - {-1, 0}) . (#1 - {-1, 0})])] &) /@ centerPoints;
Show[
        Graphics[{Hue[Random[], 1,  .8], circlesGP, PointSize[ .02], 
            Hue[Random[], 1,  .8], Point /@ centerPoints}], 
        AspectRatio -> Automatic];

Inverse

The Inverse of a Cardioid at its cusp is a Parabola. (See Limacon Of Pascal)

ParametricPlot[
	Evaluate[{
		Cardioid[][t],
		Inversion[Cardioid[][t],{{-1,0},2}]
	}],
	{t,0, 2 Pi},
	AspectRatio->Automatic,
	PlotStyle->{Hue[.75], Hue[0],Hue[.35,1,.7]}
];

ParaPlot[ Cardioid[][t], {t,0, 2 Pi, 2 Pi/(40)},
	InversionCircle->{{-1,0},2},
	DotStyle->{{Hue[0], PointSize[.012]}},
	PlotRange->{{-5,3},{-3.5,3.5}},
	AspectRatio->Automatic
];

ParaPlot[ Conics[1][t], {t,-3,3, 2 Pi/(40)},
	InversionCircle->{{0,0},1},
	DotStyle->{{Hue[0], PointSize[.012]}},
	PlotRange->{{-5,2.5},{-3.5,3.5}},
	AspectRatio->Automatic
];

Pedal of a circle

Cardioid is the Pedal of a circle with respect to a point on the circle. (see LimaconOfPascal)

ParaPlot[ {Cos@t, Sin@t}, {t, 0, 2 Pi, 2 Pi/50},
	PedalPoint->{-1,0},
	PlotDot->False,
	PlotCurve->False,
	CurveColorFunction->{Hue[#]&},
	CurveStyle->Thickness[.008],
	LineStyle->{Hue[0,0,.1]},
	DotStyle->{PointSize[0]},
	AspectRatio->Automatic,
	Axes->True
];

Conchoid of a circle

Cardioid is the conchoid of a circle of radius r with respect to a fixed point on the circle and offset 2 r.

ParaPlot[ {Sin[t],Cos[t]}, {t, 0, 2 Pi, 2 Pi/30},
	ConchoidSetting->{{-1,0}, {-2,2}},
	PlotDot->True,
	DotStyle->{Hue[0,0,0]},
	CurveColorFunction->{Hue[#]&},
	CurveStyle->{Thickness[.008]},
	LineStyle->Table[Hue[i],{i,0,1,1/30}],
	AspectRatio->Automatic,
	Axes->False
];

ConchoidGenerator[ {Cos@t, Sin@t}, {t,0, 5.2, 2 Pi/40},
	{{-1,0},2},
	LastFrameOnly->True
];

Connection with Modular Arithmetic

Let there be 36 points labeled 0 to 35 equally spaced on a circle. Connect nth point to Mod[2 n,36] th point. These lines are tangents to a cardioid. (Needs to be proven)

Clear[pList, connectionList, cardioidGP]

pList = {Cos[#], Sin[#]}& /@ Range[0, 2 Pi-2 Pi/36, 2 Pi/36]//N;
connectionList = Table[ {n, Mod[2 n, 36]}, {n, 0,35}]
cardioidGP = Line[{pList[[First@#+1]], pList[[Last@#+1]]}]& /@ connectionList;

Show[
	Graphics[
	{cardioidGP,
	Hue[0],PointSize[.02],Point /@ pList,
	Hue[.75], Table[Text[ToString@ i, pList[[i+1]] 1.1], {i,0,35}]
	}],
	AspectRatio->Automatic,
	PlotRange->All
];

Parallel Tangents

Given any line, there are exactly three tangents parallel to it. If we connect the points of tangency to the cusp, the three segments meet at equal angles of 2*Pi/3.

Clear[a, li1, li2, lineGP1, lineGP2, curveGP, gp1, gp2];
a = 1;
li1 = Table[ .3 + i, {i, 0, 2*Pi, 2*Pi/3}];
li2 = li1 + 1.3;
lineGP1 = Line[{{0, 
                  0}, {Cos[#], Sin[#]} (1 + Cos[#]) 2 a}] & /@ 
          li1;
lineGP2 = Line[{{0, 
                  0}, {Cos[#], Sin[#]} (1 + Cos[#]) 2 a}] & /@ 
          li2;
curveGP = 
        First@ParametricPlot[
            Evaluate[{Cos[t], Sin[t]} (1 + Cos[t]) 2 *a], {t, 0, 
              2*Pi}, DisplayFunction -> Identity];
{gp1, 
          gp2} = (First@
                ParaPlot[{Cos[t], Sin[t]} (1 + Cos[t]) 2 a, {t, 0, 
                    2*Pi}, #, PlotCurve -> False, TangentLineLength -> 10, 
                  DisplayFunction -> Identity]) & /@ {li1, 
            li2};

Show[
        Graphics[{{Hue[ .66], curveGP}, {Hue[ .3,  .7, 1], lineGP1, 
              gp1 /. Hue[0] -> Hue[ .3,  .7, 1]}, {Hue[0], lineGP2, gp2}}], 
        AspectRatio -> Automatic, Background -> GrayLevel[0], 
        PlotRange -> {{-2, 5}, {-1, 1} 4}, 
        Axes -> False];

Cardioid's pedal and rose

The pedal of a cardioid is the rose r==Cos[1/3*theta].

ParametricPlot[
        Evaluate@(3*
              Cos[1/3*θ]*{Cos@θ, Sin@θ}), {θ, 
          0, 3*Pi}, PlotStyle -> {Thickness[ .01], Hue[0]}, 
        Epilog -> (DeleteCases[#, _Point, Infinity] &)@First@
              ParaPlot[Cardioid[][t], {t, 0, 2*Pi}, 
                Table[i, {i, 0, Pi, Pi/20}], PedalPoint -> {0, 0}, 
                PlotDot -> False, PlotCurve -> True, 
                LineStyle -> {GrayLevel[0]}, 
                CurveColorFunction -> ({Thickness[ .01], Hue[ .7]} &), 
                DisplayFunction -> Identity], AspectRatio -> Automatic, 
        Axes -> False];