Chapter 10, Section 10.5.4, Figure 10.19

Start by defining a function that returns the orbital radius, r, for a given semi-major axis, a, eccentricity, e, true anomaly, f and longitude of pericentre, ϖ.

r[a_, e_, f_, ϖ_]:=a(1-e^2)/(1+e Cos[f-ϖ]);

Now define a function, ellipse, that draws an ellipse of specified a, e and ϖ with a point to indicate the pericentre location.

ellipse[a_,e_,ϖ_]:=
Module[{etemp, peri, sun},
etemp=ParametricPlot[
 {r[a,e,f,ϖ] Cos[f], r[a,e,f,ϖ] Sin[f]},
 {f,0,2Pi},
 AspectRatio->Automatic,
 DisplayFunction->Identity];
peri=Graphics[{PointSize[0.02],
 Point[{r[a,e,ϖ,ϖ] Cos[ϖ], r[a,e,ϖ,ϖ] Sin[ϖ]}]}];
sun=Graphics[{PointSize[0.05],Point[{0,0}]}];
Show[etemp, peri, sun, 
     Axes->None]
]

Our starting configuration with ellipses with uniformly increasing values of a and e but identical pericentres.  This has uniform width.

ell1=ellipse[0.9,0.4+0.04,0];

ell2=ellipse[0.95,0.4+0.02,0];

ell3=ellipse[1.0,0.4,0];

ell4=ellipse[1.05,0.4-0.02,0];

ell5=ellipse[1.1,0.4-0.04,0];

Display these ellipses.  (See Fig.10.19a.)

Show[ell1,ell2,ell3,ell4,ell5,
DisplayFunction->$DisplayFunction]

Now keep the ellipses with uniformly increasing values of a and e but offset their pericentres.  This no longer has uniform width.

ell1=ellipse[0.9,0.4+0.04,Pi/20];

ell2=ellipse[0.95,0.4+0.02,Pi/40];

ell3=ellipse[1.0,0.4,0];

ell4=ellipse[1.05,0.4-0.02,-Pi/40];

ell5=ellipse[1.1,0.4-0.04,-Pi/20];

Display these ellipses.   (See Fig.10.19b.)

Show[ell1,ell2,ell3,ell4,ell5,
DisplayFunction->$DisplayFunction]

Now apply an eccentricity gradient across the ellipses and reduce the pericentre offset.

ell1=ellipse[0.9,0.4-0.02,Pi/40];

ell2=ellipse[0.95,0.4-0.01,Pi/80];

ell3=ellipse[1.0,0.4,0];

ell4=ellipse[1.05,0.4+0.01,-Pi/80];

ell5=ellipse[1.1,0.4+0.02,-Pi/40];

Display these ellipses.   (See Fig.10.19c.)

Show[ell1,ell2,ell3,ell4,ell5,
DisplayFunction->$DisplayFunction]

Finally we have aligned ellipses again but with an eccentricity gradient and non-uniform width.

ell1=ellipse[0.9,0.4-0.02,0];

ell2=ellipse[0.95,0.4-0.01,0];

ell3=ellipse[1.0,0.4,0];

ell4=ellipse[1.05,0.4+0.01,0];

ell5=ellipse[1.1,0.4+0.02,0];

Display these ellipses.   (See Fig.10.19d.)

Show[ell1,ell2,ell3,ell4,ell5,
DisplayFunction->$DisplayFunction]