Fractal Mountains

When you mention fractals, one of the things that immediately comes to mind for most people
is fractal landscapes. We’ve all seen amazing images of mountain ranges, planets, lakes, and things
of that sort that were generated by fractals.

mount2.gif

Seeing a fractal image of a mountain, like the one in this image (which I found
here via a google image search for “fractal mountain”), I expected to find that
it was based on an extremely complicated fractal. But the amazing thing about fractals is how
complexity emerges from simplicity. The basic process for generating a fractal mountain – and many other elements of fractal landscapes – is astonishingly simple.


koch.jpg

The basic idea is standard fractal self-symmetry, with a dash of randomness. Remember the basic
Koch curve? In a Koch curve, we took straight line segments, and replaced them with a new structure made
of a slightly more complex set of segments – and then replaced those, and so on, like in this image. By introducing a bit of randomness, you can get some pretty compelling coastlines, as you can see in my
original post on the Koch curve.

For landscapes, you need to be a bit more sophisticated than that – but not by much. For a two dimensional image of a mountain, you use a simple slightly randomized process – a randomizing L-system.
The basic idea is to start with a triangle; and to subdivide it into smaller triangles by dividing each edge into two sub-segments, and then creating a triangle that connects the point where the sub-segments meet. As a non-random geometric L-system, here’s the replacement rule:

triangle-lsystem.png

All we need to do is randomize that slightly. When we divide an edge into two sub-segments, we’ll
move their connection point slightly. Just look at the pictures to see two steps of the process. Repeat that 10 times, and you’ve got an amazingly detailed image of a mountain.

landscape-2.png

Now, suppose you want a real three dimensional mountain. Start with a triangle. Grab a point inside the triangle, and randomly move it. Then draw a line from each corner of the original triangle to that point. You’ve replaced the triangle with a sort of irregular pyramid. Each of the faces is a triangle. Repeat the process with them. Keep doing that. If you set the parameters correctly for the randomizer which determines how far to point relative to the size of the triangle, you can get an amazing image of
a mountain.

mountain.png

0 thoughts on “Fractal Mountains

  1. bn

    beautiful explanation. Do you think all chaos/complexity in general can be reduced to simple principles…sort of like gasket and the fern?

    Reply
  2. mj

    In a way it’s not surprising that complex structure comes out of very simple fractal rules. The structures in reality, the real mountains, are also formed by relatively simple processes. A bit of wind and rain and erosion…

    Reply
  3. Michael Swart

    I’m reminded of a multigrid algorithm which can find solutions of linear problems on a grid. The grid starts out on a coarse/macro level and refines a solution on increasingly finer grids to provide more and more detail.
    The full-multigrid algorithm seems the same as your three-d example except that the grid points are rectangular rather than triangular. And the randomness is traded in for a target solution.

    Reply
  4. matt

    #2: Well, maybe. Except that wind and rain and erosion are not simple at all if you try to model them in detail, we just tend to gloss over those details most of the time. This sort of landscape generating fractal approaches things from the other direction, so one could argue that it is something of a coincidence that it looks so right. There are actually good reasons for it, I think, but they’re more subtle than just that simplicity gives rise to complexity in both cases.

    Reply
  5. bigTom

    I think it is remarkable how well fractal mountains, and seacoasts look realistic. Clearly with variable geology, (think of sedimentary mountains such as the Candian Rockies), you have a significant amount of the geomorphology controlled by the differing erodability of different strata, nature isn’t following such a simple script. Yet the result looks pretty good.

    Reply
  6. andy

    Problem is if you’ve been exposed to these kind of things for a while (I’ve been playing around with Terragen for quite a while), you start noticing that “fractal” feel in all these CG landscapes. Erosion is one of the things the fractal landscapes never seem to get right… in some sense you need to “post-process” the landscapes to add erosion effects, or it looks fake.

    Reply
  7. David Phillips

    About 15 years ago, I heard Benoit Mandelbrot speak. One of his complaints about all the CGI landscapes – my memory is that he showed an example from The Wrath of Khan but I’m not sure that’s right – is that they’d truncate at some fixed scale and not actually be fractal.
    In real life, of course, things often aren’t truly fractal. Erosion, mentioned above, can lead to well defined scales, smaller than the starting, largest scale. I came away thinking (along with everyone else, I think) that while Mandelbrot had some very keen ideas that he had to fight to get accepted – the diffusion equation only appears smooth because we give it smooth initial conditions, for example – at some point he got a little carried away. There’s more to the universe than fractals.

    Reply
  8. Amit Patel

    I agree with Andy — the fractal landscapes look fake to someone who looks at landscapes often. Erosion is the biggest missing element but there are others too (glaciers, volcanic action, etc.). Take a look at this region for example, or any mountainous region on the planet. It does have a fractal feel to it, but it’s not what fractal landscape algorithms produce. We need fractal channels, not only fractal displacement.

    Reply

Leave a Reply