The Universal Egg Equation
A paper recently came to my attention about the shape of (avian) eggs. The paper is very readable.
It turns out, bird eggs come in a variety of shapes: round (like ostrich eggs), elliptical (like emu eggs), a flattened oval (like chicken eggs), and pyriform (more pointed with flatter sides, like guillemot eggs).
The tradition, in the egg-equation community, is to define these shapes using 2 dimensional equations, where x ranges over the length of the egg, and y is a function of x, polynomial over x.
Thus the equations for circles and ellipses look a little peculiar.
The derivation isn't that complicated: The circle has a radius of
For the diagram above I rotated the egg 90 degrees and applied a gradient colouring. This gives the illusion of depth, but the equation is strictly two dimensional. The actual three dimensional object rotates this same shape around the axis, as eggs are symmetrical in this way.
The equation for the classic oviform egg (the flattened oval), is a little more complicated:
y = ±(B/2) √((L²-4x²) / (L²+8wx+4w²))
The new parameter,
This diagram shows the effect of
The equation for a pyriform egg (the pointy eggs), is even more involved:
y = ±(B/2) √((L²-4x²)L / (2(L-2w)x² + (L²+8wL+4w²)x + 2Lw² + L²w + L³))
Finally, the universal egg equation, which encompasses all these egg shapes, is something of a monster:
y = ±(B/2) √((L²-4x²) / (L²+8wx+4w²)) / (1 - ( (√(5.5L²+11Lw+4w²) (√3 BL-2D√(L²+2wL+4w²))) / (√3 BL(√(5.5L²+11Lw+4w²) - 2√(L²+2wL+4w²))) ) (1 - √( (L(L²+8wx+4w²)) / (2(L-2w)x² + (L²+8Lw-4w²)x + 2Lw² + L²w + L³) ) ) )
If we pull out a few constants in
α = L²+4w² β = L²+2wL+4w² = α+2wl γ = L²+8wL-4w² δ = 5.5L²+11Lw+4w² ε = 2Lw²+L²w+L³ y = ±(B/2) √((L²-4x²)/(8wx+α)) / (1 - ((√δ (√3 BL-2D√β)) / (√3 BL(√δ - 2√β))) (1 - √((L(8wx+α)) / (2(L-2w)x² + γx + ε))) )
There is yet another new parameter here,
Ratios less than 0.5 aren't realistic as actual eggs. This diagram shows the effect of varying the ratio of
All respect to egg scientists,
An egg descriptor is defined in terms of roundness, pointiness, and flattening, and functions can calculate a polygon approximating the shape given the size and a precision for the approximation (number of sides of the polygon, essentially). I can then create the same shape egg in different sizes. I also have different functions to generate the round, elliptical, oviform, pyriform, or full avian shape by applying the appropriate formula to the egg descriptor. (Obviously not all the parameters apply to all the formulas.) This is what made the first picture above.
Given the ability to draw a polygon, now we can use it to make art. Eggs in a messy nest, cosmic eggs:
To give the effect of depth in the egg clutch, the eggs are rendered with those higher up the page first (height as a proxy for depth, in other words) and each egg polygon is filled with a circular gradient whose center is located at point towards the top of the canvas. I'm using ordered perceptually uniform gradients that run from light to dark to give this sense of shading.