DescartesOval::usage="Let P and Q be two fixed points on the plane, and let d(P, S) and d(Q, S) the distances of these two points to a third variable point S. Being m and a two arbitrary real numbers, then, the cartesian oval is the geometric locus of the S(x, y) points that satisfy the condition that: d(P, S) ± m d(Q, S) == a. References: https://mathcurve.com; AI; Personal.";
Development:
Be d(P, S) and = d(Q, S) by the cosines law (remember that d(P, Q) = c):
r=
r'
2
r'
2
r
2
c
Sustituting r’ in d(P, S) ± m d(Q, S) == a:
r±m+-2rcCos[θ]==a;
2
r
2
c
Solving for r:
In[]:=
Solver+m+-2rcCos[θ]==a,r//FullSimplify
2
r
2
c
r-,r;
a-cCos[θ]+(+-+cCos[θ](-2a+cCos[θ]))
2
m
2
m
2
a
2
c
2
c
2
m
2
m
-1+
2
m
-a+cCos[θ]+(+-+cCos[θ](-2a+cCos[θ]))
2
m
2
m
2
a
2
c
2
c
2
m
2
m
-1+
2
m
Simplifying the expressions that will be used in the animation.
Animation:
In[]:=
Manipulatea=2.5;c1=2;m=0.5;P={0,0};Q={c1,0};[θ_]:=c1Cos[θ]-a+m-2ac1Cos[θ]+(1-)-1;[θ_]:=c1Cos[θ]-a-m-2ac1Cos[θ]+(1-)-1;[θ_]:={[θ]Cos[θ],[θ]Sin[θ]};[θ_]:={[θ]Cos[θ],[θ]Sin[θ]};w=Grid[{{,,,,,},{Norm[P-[t]],Norm[Q-[t]],Norm[P-[t]]+mNorm[Q-[t]],Norm[P-[t]],Norm[Q-[t]],Norm[P-[t]]-mNorm[Q-[t]]}},FrameAll,ItemSize->15,ItemStyle->15];Show[{ParametricPlot[[θ],{θ,0,t},ColorFunction->"DeepSeaColors"],ParametricPlot[[θ],{θ,0,t},ColorFunction->"BrassTones"],Graphics[{Black,PointSize[0.01],Point[P],Text[Style["P",14,Bold],P,{0,-1.2}],Point[Q],Text[Style["Q",14,Bold],Q,{0,-1.2}],Point[[t]],Text[Style["",14,Bold],[t],{0,-1.2}],Point[[t]],Text[Style["",14,Bold],[t],{0,-1.2}],Thick,{DarkYellow,Line[{P,[t]}],Line[{Q,[t]}]},{Blue,Line[{P,[t]}],Line[{Q,[t]}]}}]},AspectRatioAutomatic,AxesTrue,AxesOrigin{0,0},AxesLabel{x,y},PlotRange{{-7.5,4},{-6,6}},ImageSize700],Style["Descartes' Oval",Bold,Large],{{t,0.00002,"Value (t)"},0.000001,2π,0.00001},Delimiter,{{w,5,"Distances"}},ControlPlacementTop
r
+
2
m
2
a
2
c1
2
m
2
Sin[θ]
2
m
r
-
2
m
2
a
2
c1
2
m
2
Sin[θ]
2
m
S
+
r
+
r
+
S
-
r
-
r
-
PS
+
QS
+
EQ
+
PS
-
QS
-
EQ
-
S
+
S
+
S
+
S
+
S
-
S
-
S
-
S
-
S
+
S
-
S
+
S
+
S
+
S
-
S
-
S
-
S
-
S
-
S
+
S
+
Out[]=

