Unlike circles and ellipses, ovals lack an exact mathematical definition. In most computer graphics contexts you would use Bézier curves to draw these ovals, but you can also form smooth curves by joining several circular arcs of different radii. A straight line should pass through the centres of two connected arcs and through the point where they join. Here’s an example:

Two arcs with different radii joined together in a smooth way

Based on this principle you can draw egg-shaped ovals using only a compass and ruler, but I have digitally constructed a few of these Euclidean eggs with p5.js:

Moss’ egg Moss’ egg

Thom’s egg Thom’s egg

√3:2:√7 √3:2:√7

This geometric way of constructing curves has long been used by architects and engineers. Renaissance artist Albrecht Dürer used this principle to design a Roman alphabet:

Image of letter forms according to Albert Dürer from the book Cyclopedia Of Architecture, Carpentry, And Building