MathArtBlog is back! Dragonflies!!!

My last post was back in December of 2019, just as I was leaving the Institute for Computational and Experimental Mathematics in Province, RI. Unless you’ve been in a multi-year hibernation, you’ll note that this was just a few months before the pandemic disrupted everything, which is part of the reason this blog went on hiatus. However, I can’t completely blame COVID. For years I’ve been transitioning my teaching from Mathematics to Computer/Data Science. Preparing all new classes and learning new fields takes time. (Oh, and did I mention I’ve also been remodeling an old house?)

With all that said, over the last few years I’ve still produced some MathArt work that I have neglected to document here. With this post I hope to begin to correct that!

In the coming weeks I will alternate between older projects and more recent ones. Today I’ll start with an older one. Probably the best place to pick this blog back up is right where I left off: my visit to ICERM in Fall of 2019. As readers of this blog may recall, one of my favorite things to explore is natural phenomena that have some apparent mathematical structure. I’ve written here about my work inspired by seashells, coral, sunflowers, etc. In the Fall of 2019 I was fascinated by Dragonfly wings. I’ll cut straight to the punchline. Here’s the design I eventually produced, laser-etched in plexiglass.

Lasercut dragonfly design

This piece won the “Honorable Mention” award at the Mathematical Art exhibition at the 2020 Joint Mathematics Meeting. In the remainder of this blog post I’ll tell you how I did it.

The body is taken from a photograph of a real dragonfly. The wings are procedurally generated. To begin, I just traced the outline of the wings in the photo, and erased them. Then the real work began.

First, I randomly placed points inside each wing shape, with increasing density as you move away from the dragonfly body. This was all done in Rhino3D/Grasshopper. (For readers familiar with this software, you can do this by filling in the outline with a boundary surface, meshing with TriRemesh, choosing a mesh color at each vertex proportional to the distance from the body, and then using Daniel Piker’s Kangaroo with ImgCircles input to move the mesh vertices according to the darkness of the coloring.)

Random point in dragonfly wing, with variable density.

Next, I used these points to define a Voronoi diagram. Put simply, this is just a cellular structure in which each point is at the center of a cell. (Grasshopper has a component that does this automatically.)

Voronoi cell structure based on point distribution

This network defines the fine structure of the wing. To get the primary veins, I manually selected a few points around the boundary, and used Grasshopper’s “ShortestWalk” component to find paths through the edges of the Voronoi cell structure connecting them. After a bit of smoothing of the resulting curves, they look like this:

Shortest paths make the primary veins

The last step was to thicken these curves in such a way that their thickness varied according to the distance from the dragonfly body.

Vein thickness tapers as they move further away from body.

Here it is, all put together:

The final wing design

The same basic idea can be used to create lots of natural shapes. Here’s the same algorithm applied to a hand-drawn leaf outline to create the veins (laser-cut in wood).

Lasercut procedurally generated leaf design.

Leave a Reply