Time for another “math in the moment” post! There have been a few interesting developments just this past week, so I thought I’d share them with you.
The first revolves around the Koch curve. I’ve talked a lot about the algorithm used to generate the Koch curve when the angles are changed — but this is the first time I’ve experimented with three different angles. For example, the recursive procedure
F +45 F +180 F +315 F
generates the following spiral:
Looks simple, right? Just 16 line segments. But here’s the unexpected part — it takes 21,846 iterations to make! That’s right — the horizontal segment in the upper left is the 21,846th segment to be drawn.
Why might this be? Partly because of the fact that one angle is 180, and also the fact that 45 + 415 = 360. In other words, you are often just turning around and retracing your steps. These arms are retraced multiple times, not just once or twice like in previous explorations.
I found this family of spirals by having Mathematica generate random angles and using the algorithm to draw the curves. Without going into too many details, the “obvious” way to generalize the equation I came up with before didn’t work, so I resorted to trial and error — which is easy to do when the computer does all the work!
Notice the pattern in the angles: 45 (1/8 of a circle), 180 (1/2 of a circle), and 315 (7/8 of a circle). Moving up to tenths, we get angles of 36 (1/10 of a circle), 180 (1/2 of a circle), and 324 (9/10 of a circle), which produce the image below.
Notice there are only five arms this time (not 10). And it only takes 342 segments to draw! There’s an alternating pattern here. Moving up to twelfths gives 12 arms, and takes a staggering 5,592,406 segments to draw. Yes, it really does take almost 6,000,000 iterations to draw the 24th and last segment!
With the help of Mathematica, though, I did find explicit formulas to calculate exactly how many iterations it will take to draw each type of image, depending on whether there are an even number of arms, or an odd number. Now the hard part — prove mathematically why the formulas work! That’s the next step.
I hope this “simple” example illustrates how much more challenging working with three different angles will be. I think working out the proof in these cases will give me more insight into how the algorithm with three angles works in general, and might help me derive an equation analogous to the case when the first and third angles are the same.
The second development is part of an ongoing project with Nick to write a paper for the Bridges 2017 conference in Waterloo. The project revolves around fractal trees generated by L-systems. (We won’t be discussing L-systems in general, but I mention them because the Wikipedia had a decent article on L-systems.)
Consider the examples above. You first need to specify an angle, a, and a ratio, r. In this example, a is 45 degrees, and r is 0.5. Start off by drawing a segment of some arbitrary length (in this case the trunk of a tree). Then turn left by the angle a, and recurse using the length scaled by a factor of r. When this is done, do the same recursion after turning right by the angle a.
On the left, you should see three different sized lengths, each half the size of the one before. You should also be able to easily see the branching to the left and right by 45 degrees, and how this is done at each level.
In the middle, there are six levels, with the smallest branches only 1/32 the length of the tree trunk. Can you guess how many levels on the right? There are twelve, actually. At some point, the resolution of the screen is such that recursing to deeper levels doesn’t actually make the fractal look any different.
What Nick is interested in is the following question. Given an angle a, what is the ratio r such that all the branches of the tree just touch? In the example below with a being 45 degrees, the leaves are just touching — increasing the ratio r would make them start to overlap.
What is r? It turns out that there’s quite a bit of trigonometry involved to find the precise r given an angle a, but it’s not really necessary to go into all those details. It’s just enough to know that Nick was able to work it out.
But what Nick is really interested in is just the canopies of these trees — in other words, just the outermost leaves, without the trunk or any of the branches.
Right now, he’s experimenting with creating movies which show the canopies changing as the angle changes — sometimes the ratio is fixed, other times it’s changing, too.
Two observations are worth making. First, this was a real team effort! Nick had done the programming and set up quite a bit of the math, and with the aid of Mathematica, I was able to help verify conjectures and get the expressions into a useable form. We each had our own expertise, and so were each able to contribute in our own way to solving the problem.
Second, Nick is using mathematics to aid in the design process. My first attempts to create symmetric curves using the algorithm for the Koch snowflake were fairly random. But now that I’ve worked out the mathematics of what’s going on, I can design images with various interesting properties.
Likewise, Nick has in mind a very particular animation for his movies — using the just-touching canopies — and is using mathematics in a significant way to facilitate the design process. Sure, you can let the computer crunch numbers until you get a good enough approximation — but the formula we derived gives the exact ratio needed for a given angle. This is truly mathematical art.
I’ll keep you updated as more progress is made on these projects. I’ll end with my favorite image of the week. The idea came from Nick, but I added my own spin. It’s actually canopies from many different trees, all superimposed on each other. Enjoy!