Drawing egg shapes with p5.js
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:
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:
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: