Limaçon

Author

Eric W. Weisstein
June 6, 2014

This notebook downloaded from http://mathworld.wolfram.com/notebooks/PlaneCurves/Limacon.nb.

For more information, see Eric's MathWorld entry http://mathworld.wolfram.com/Limacon.html.

©2014 Wolfram Research, Inc. except for portions noted otherwise

Plot

MakeBoxes[b_ +a_ Cos[z_Symbol],TraditionalForm]:=RowBox[{MakeBoxes[b,TraditionalForm],"+",RowBox[{MakeBoxes[a,TraditionalForm]," ","cos"," ",MakeBoxes[z,TraditionalForm]}]}]
MakeBoxes[b_ + Cos[z_Symbol],TraditionalForm]:=RowBox[{MakeBoxes[b,TraditionalForm],"+",RowBox[{"cos"," ",MakeBoxes[z,TraditionalForm]}]}]
MakeBoxes[Equal[x_,y_],TraditionalForm]:=RowBox[{MakeBoxes[x,TraditionalForm],"=",MakeBoxes[y,TraditionalForm]}]
MakeBoxes[Cos[z_Symbol],TraditionalForm]:=RowBox[{"cos",MakeBoxes[z,TraditionalForm]}]

Show[GraphicsArray[
PolarPlot[#+Cos[t],{t,0,If[#==0,1,2]π},PlotStyle->Red,
PlotLabel->TraditionalForm[r==#+ Cos[θ]],
Ticks->None,
DisplayFunction->Identity]&/@{2,1.3,1,.5,0}
]]

Show[Block[{$DisplayFunction=Identity},
Table[PolarPlot[a+Cos[t],{t,0,2π},
Ticks->None,PlotStyle->Hue[a/2]],{a,0,2,.1}]
]]

(b+a Cos[t])

ParametricPlot[(1+# Cos[t]){Cos[t],Sin[t]},{t,0,2π}]&/@{0,.1,.5,1,2,3}

(b+a Cos[t])

{a==b cusp, a/b>1 acnode, a/b<1 crunode,b==0 None}

ParametricPlot[(#+Cos[t]){Cos[t],Sin[t]},{t,0,2π}]&/@{0,.1,.5,1,2,3}

Equations

Cartesian

Factor/@GroebnerBasis[Append[Thread[{x,y}==(b+a Cos[t]) {Cos[t],Sin[t]}],Cos[t]^2+Sin[t]^2==1],{x,y},{Cos[t],Sin[t]}]

FullSimplify[%]

eqn=(a^2) (x^2)-(b^2) (x^2)-2 a (x^3)+(x^4)-(b^2) (y^2)-2 a x (y^2)+2 (x^2) (y^2)+(y^4);

eqn/.{x->0,y->0}

With[{a=1,b=1},
ContourPlot[(a^2) (x^2)-(b^2) (x^2)-2 a (x^3)+(x^4)-(b^2) (y^2)-2 a x (y^2)+2 (x^2) (y^2)+(y^4)==0,{x,-.5,2},{y,-1.5,1.5},Contours->{0},AspectRatio->Automatic,MaxRecursion->3]]

Properties

curve=(b+a Cos[t]) {Cos[t],Sin[t]};

ArcLength

With[{a=2,b=1},ParametricPlot[(b+a Cos[t]) {Cos[t],Sin[t]},{t,0,π}]]

ArcLength[(b+a Cos[t]) {Cos[t],Sin[t]},t,Assumptions->a>0&&b>0&&t>0]

Limit[%,t->2π]

4 (a+b) EllipticE[((4 a b)/(((a+b))^2))]/.b->0

Inner Loop

With[{a=2,b=1},ParametricPlot[(b+a Cos[t]) {Cos[t],Sin[t]},{t,π-ArcCos[b/a],π}]]

s1=With[{θ0=ArcCos[b/a]},ArcLength[b+a Cos[θ],{θ,π-θ0,π},Assumptions->0<b<a]]

FullSimplify[s1/.l_Log:>ComplexExpand[l,TargetFunctions->{Re,Im}],0<b<a]

Outer Envelope

With[{a=2,b=1},ParametricPlot[(b+a Cos[t]) {Cos[t],Sin[t]},{t,0,π-ArcCos[b/a]}]]

s2=With[{θ0=ArcCos[b/a]},ArcLength[b+a Cos[θ],{θ,0,π-θ0},Assumptions->0<b<a]]

FullSimplify[s2/.l_Log:>ComplexExpand[l,TargetFunctions->{Re,Im}],0<b<a]

Total

2FullSimplify[s1+s2/.l_Log:>ComplexExpand[l,TargetFunctions->{Re,Im}],0<b<a]

Limit[2s1+s2,b->a]

Area

Assuming[a>0&&b>0,Area[curve,{t,0,2π}]]//Timing

Check1

ParametricPlot[curve/.{a->1,b->1.1},{t,0,2π},ImageSize->Small]

(1/2) ((a^2)+2 (b^2)) π/.{a->1,b->1.1}

1/2 (3 b Sqrt[(a-b) (a+b)]+a^2 Pi+2 b^2 Pi-(a^2+2 b^2) ArcCos[b/a])/.{a->1,b->1.1}

Check2

ParametricPlot[curve/.{a->1,b->2},{t,0,2π},ImageSize->Small]

(1/2) ((a^2)+2 (b^2)) π/.{a->1,b->12}

1/2 (3 b Sqrt[(a-b) (a+b)]+a^2 Pi+2 b^2 Pi-(a^2+2 b^2) ArcCos[b/a])/.{a->1,b->2}

AreaInertiaTensor

Assuming[a>0&&b>0,AreaInertiaTensor[curve,{t,0,2π}]]//Timing

Centroid

Assuming[a>0&&b>0,Centroid[curve,{t,0,2π}]]//Timing

Curvature

Parametric

FullSimplify[Curvature[curve,t]]

Polar

FullSimplify[Curvature[b+a Cos[q],q],a>0&&b>0&&0<q<2π]

Implicit

SortBy[FullSimplify[Curvature[eqn,{x,y}],a>0&&b>0&&(x|y)∈Reals],ByteCount]

ByteCount/@%

Slope

Slope[(b+a Cos[t]) {Cos[t],Sin[t]},t]//FullSimplify

Slope[b+a Cos[q],q]//FullSimplify

Slope[a^2 x^2-b^2 x^2-2 a x^3+x^4-b^2 y^2-2 a x y^2+2 x^2 y^2+y^4==0,{x,y}]//FullSimplify

SpecialAffineCurvature

FullSimplify[SpecialAffineCurvature[curve,t],a>0&&b>0&&0<t<2π]

Tangential Angle

TangentialAngle[curve,t,Assumptions->a>0&&b>0&&t>0]

Area

With[{b=.5,a=1},
Show[GraphicsArray[
PolarPlot[b+a Cos[θ],Evaluate[{θ,Sequence@@#}],
AspectRatio->Automatic,PlotRange->{{-.2,1.7},{-1,1}},
Ticks->None,PlotStyle->Red,DisplayFunction->Identity]&/@{
{Pi-ArcCos[(b/a)],Pi+ArcCos[(b/a)]},
{-Pi+ArcCos[(b/a)],Pi-ArcCos[(b/a)]},
{0,2π}
}
]]]

Inner Loop

With[{b=.5,a=1},
PolarPlot[b+a Cos[θ],{θ,Pi-ArcCos[(b/a)],Pi+ArcCos[(b/a)]},
Ticks->None,PlotStyle->Red
]
]

Solve[0==b+a Cos[θ],θ]

With[{b=.5,a=1},{{θ->-ArcCos[-(b/a)]},{θ->ArcCos[-(b/a)]}}]

area=FullSimplify[Integrate[(b+a Cos[θ])^2,{θ,Pi-ArcCos[(b/a)],Pi+ArcCos[(b/a)]}],0<b<a]/2

area=FullSimplify[Integrate[(b+a Cos[θ])^2,{θ,Pi-ArcCos[(b/a)],Pi}],0<b<a]

Outer Envelope

With[{b=.5,a=1},
PolarPlot[b+a Cos[θ],{θ,-Pi+ArcCos[(b/a)],Pi-ArcCos[(b/a)]},
Ticks->None,PlotStyle->Red
]
]

area2=FullSimplify[Integrate[(b+a Cos[θ])^2,{θ,-(Pi-ArcCos[(b/a)]),Pi-ArcCos[(b/a)]}],0<b<a]/2

area2=FullSimplify[Integrate[(b+a Cos[θ])^2,{θ,0,Pi-ArcCos[(b/a)]}],0<b<a]

Between Loops

darea=FullSimplify[area2-area,0<b<a]

b=(a/2)

FullSimplify[{area,darea,area2}/.b->a/2,a>0]

Envelope

LimaconCircle[i_,n_,x_]:=Module[{k=(Pi/2+2Pi i/n)//N},Circle[{Cos[k],Sin[k]},Sqrt[(Cos[k]-x)^2+Sin[k]^2]]]

LimaconEnvelope[n_,x_]:=Module[{i},Table[LimaconCircle[i,n,x],{i,1,n}]]

LimaconCenter:=Circle[{0,0},1]

Show[Graphics[{LimaconEnvelope[20,1],{Thickness[.015],LimaconCenter}}],
  AspectRatio->Automatic]

Show[GraphicsArray[{
Show[Graphics[{LimaconEnvelope[20,.4],{Thickness[.015],LimaconCenter}}],
  AspectRatio->Automatic,DisplayFunction->Identity],
Show[Graphics[{LimaconEnvelope[20,.8],{Thickness[.015],LimaconCenter}}],
  AspectRatio->Automatic,DisplayFunction->Identity],
  Show[Graphics[{LimaconEnvelope[20,1],{Thickness[.015],LimaconCenter}}],
  AspectRatio->Automatic,DisplayFunction->Identity],
  Show[Graphics[{LimaconEnvelope[20,1.5],{Thickness[.015],LimaconCenter}}],
  AspectRatio->Automatic,DisplayFunction->Identity]}]]

Vector Properties

parm=(b+a Cos[t]) {Cos[t],Sin[t]};
assum=a>0&&b>0&&0<t<2π;
xform={Abs[x_]^(n_/;Mod[n,2]==0):>x^n};

VectorLength

Assuming[assum,FullSimplify[Norm[parm]/.xform]]

NormalVector

Assuming[assum,FullSimplify[NormalVector[parm,t]/.xform]]

TangentVector

Assuming[assum,FullSimplify[TangentVector[parm,t]/.xform]]