Anyone who has ever seen my work should have expected that sooner or later I would write a post (or two or three) about seashells….

There are many places in nature where there appear to be mathematical laws at play. For example, pinecones exhibit the mathematical phenomenon of phyllotaxis, tree branching can be modeled with various fractal-generating techniques (e.g. Iterated Function Systems), and tiger stripes are apparently governed by reaction-diffusion equations. Personally, I find the most beautiful example of apparent mathematics in nature is the way seashells follow certain kinds of curves called “logarithmic spirals.”

The key to understanding logarithmic spirals lies in the fact that after each turn of the spiral, everything shrinks by a certain fixed factor. (I’ll assume this factor is 1/2 here). So, for example, if the radius of the first turn is 100, then the radius of the second turn is half that, or 50. The third turn has a radius that is half that again (i.e. 25), etc. The heights of each turn of the spiral obey the same law: if the height of the first is 100, then the second will be at height 50, the third at height 25, etc. Because the radius and height are always in constant proportion, the resulting curve lies on a **cone**.

Using some basic techniques from an area of mathematics called **Differential Geometry***, *we can find three special vectors at each point of the spiral, called the *Tangent* (T), *Normal* (N), and *Binormal* (B). (Conveniently, Grasshopper has pre-programmed algorithms to find these vectors for us.)

Together, N and B define a plane that is perpendicular to the curve:

To make a basic seashell shape, we simply place circles in these planes. The important part is that the radius of these circles *must obey the same scaling law*. So if the radius of the first circle is 16, then the radius of the circle that appears after one full turn will be 8, the radius will be 4 after two turns, etc.

To make things look more realistic, one can use curves other than circles. In the following images (top view on the left, side view on the right), I used two different hand-drawn curves. They’re similar, but one of them has a slight bump. I then placed these curves (always respecting the same scaling rule) around the spiral, alternating so that there were two copies of the smooth curve for each copy of the bumpy one…

…and made a surface out of them.

Making this object 3D-printable was the next challenge. And it turned out to be a huge one! First of all, you can’t 3D-print an object with infinitely thin walls. The walls must have some thickness. However, the standard thickening tool (the “Offset” function) doesn’t work on this design! This is because the diameter of the smallest curve, at the top of the seashell, is less than the amount you have to thicken to make the object printable.

To deal with this issue, I created a second seashell, inside the first, using only the smooth curves. The trick to making it all work was to make the inner shell have fewer turns than the outer one, so that it could be offset inwards. That left the smallest part of the seashell model solid, which is fine because it’s deep inside where no one can see.

Finally, it was time to add some color. This was done by finding an image of an actual seashell texture on the internet, and wrapping that image separately onto the inner and outer surfaces.

Here’s a photograph of the final design, 3D-printed in full-color “sandstone” at Shapeways. You can order your own here!

And yes, it does “work.” You really can hear the ocean in it.

[…] after modeling as realistic looking of a seashell as I could using Rhino and Grasshopper (described here). That model was a surface defined by two different curves that were replicated, at increasingly […]