Categories
Fractals Math Programming Python

Fractals in 10 minutes no. 3 – The Dragon

When first I looked through the pages of the book “Hacker’s Delight”, I found myself looking at the chapter about bases. There I learned a very curious fact – with the digits of 0,1 and the base of -2, you can represent any integer. Right afterwards I learned something even more interesting – with the digits of 0,1 and the base of 1-i, you can represent and number of the form a+bi where a and b are integers. Having nothing to do with this curious fact, I let the subject go.
Some time later, I was reading through Knuth’s “Art of Computer Programming”, and found that with the base of (1-i)^-1, and digits of 0,1 you can generate the dragon fractal!

The dragon fractal

Generating the fractal is quite simple actually:

def create_dragon_set(n):
    """calculate the dragon set, according to Knuth"""
    s = set([0.0+0.0j])
    for i in range(n):
        new_power = (1.0-1.0j)**(-i)
        s |= set(x+new_power for x in s)
    return s

(By the way, can you do it better?)

The annoying part is converting the complex numbers to drawable integer points. After doing so, I used PIL to draw the jpeg.
Here’s a link to the code.

3 replies on “Fractals in 10 minutes no. 3 – The Dragon”

actually there are Dragon curves – very interesting fractals
simplest way to get them is folding a paper string by half few times
curious fact is that 4 Dragon curves can completely fill 2d space without any interference
i was playing with .NET some time ago and have a sample program which generates Dragon curve for few steps ahead with specific folding direction – but it’s horribly slow because i was using strings to represent fractal :)

Well, because of your comment I also looked at the dragon curve page on wikipedia. It seems that:

1. Dragon curves may be produced by lsystems (lstrings). On a side note, a version of the book ‘Jurassic Park’ had another level of the dragon curve on the openning page of each chapter. It was drawn by using lsystems. I remember that as a kid reading this book, I really liked it (and tried to write a program to draw it).

2. As you said, about folding paper – well, that really makes me very happy to know. I never made this connection between fractals and folding. Excellent!

3. It seems what I actually drew in this post is the twin-dragon, which is also named the Davis-Knuth dragon. It is constructed from two dragon curves.

Thanks!

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.