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.

This entry was posted in Fractals, Math, Programming, Python and tagged , , , , . Bookmark the permalink.

3 Responses to Fractals in 10 minutes no. 3 – The Dragon

  1. Keymone says:

    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 :)

  2. lorg says:

    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.


  3. Pingback: Hacker Wannabe » Blog Archive » Dragonul lui Heghway