Results 1 to 10 of 11

Thread: Fractal Continent Generator

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Administrator waldronate's Avatar
    Join Date
    Mar 2007
    Location
    The High Desert
    Posts
    3,561

    Default

    For a point-sampled image, blurring and thresholding it is roughly equivalent to downsampling the image and then upsampling it to the same resolution. Similarly, a fractal synthesis algorithm that works on the scale/add principle can be stopped at fewer levels of scaling and adding to get an image that's very approximately equal to a lower-resolution image that's upscaled (if that makes any sense).

    For something like a basic fBm, the number of octaves of noise required to generate an image without aliasing (that is, that just exactly fills the surface with maximum detail) is approximately log2(imageresolution). That is, for a function with 1/(2^n) scaling, having more than the above number of octaves won't generate meaningful new information, while having a lesser number of octaves will generate versions of the surface that have the same information content as lower-resolution images. The above information is subject to the basic function, of course; the classic cubic-spline-based Perlin function gives nice a smooth lower-resolution images that look an awful lot like a Gaussian-blurred and thresholded image.

  2. #2

    Default

    Oooh, I understand where you're coming from now. ~head-desk~



    (TL;DR) Summary:
    If I understand correctly, what you're saying holds true for a random fractal such as brownian motion or fractal terrain, but I'm unsure if it holds true for an L-system, which is what (I think) my algorithm actually is.

    Most of my knowledge about this comes from wikipedia and you seem to know more on the subject; I don't suppose you've got some good links/books to read on the subject to try and learn more?

    Also, after bouncing this around, I can abstract the entire method into a more universal and faster method. Awesome! Exactly what I came here looking for. Thank you.



    The Long Path to Conclusion:

    What you're saying is that a fractal synthesis algorithm that works on scale/add can be stopped at an octave n to produce an image of n^sqrt(k) resolution without aliasing, where k is the number of children that occur at each octave (in the trivial case where we divide into four quadrants, two; if it were instead dividing into nine equal children it'd be different). Understood and agreed. And what you're saying about blurring and thresholding does hold in this case and makes sense (although I'm still trying to wrap my head around if it's true in all cases...).

    The crucial difference is that this fractal generation isn't based on scale/add (I think, if I understand you correctly). It's closer related to an L-system; using the terminology on the wiki page, the algorithm is a non-deterministic L-system with a stochastic and context-sensitive grammar. Fractal in a completely different sense, but still fractal.

    Although, most of my knowledge about this comes from wikipedia and you seem to know more on the subject; I don't suppose you've got some good links/books to read on the subject to try and learn more?

    The system in L-system terminology:

    Variables Squaresize, Circlesize
    Constants Size Factor F; Variance Factor V; Random Gaussian with mean 0, stddev 1, g
    Start Square (0.5), Circle (0.5)
    Rules Squaresize = s (0.5)-> SquareF * s + V * s * g
    Squaresize = s (0.5) -> CircleF * s + V * s * g
    Circlesize = s (0.5) -> SquareF * s + V * s * g
    Circlesize = s (0.5) -> CircleF * s + V * s * g

    Also, after formalizing that, I just realized I could abstract the entire method into a more universal method that I could re-use later on that is also probably faster. Awesome! Exactly what I came here looking for.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •