looking for functions that are randomized, aperiodic, non-recursive, ... (help my terminology)

40 Views Asked by At

Context

I'm creating a video game with a generated world that can be very large in scale (beyond what will fit on the machine).

I want to have some very large objects, where the user might only be looking at a tiny piece at a time. Something like a "fractal explorer" where you might zoom in 1000000x and look around. Or maybe a nebula in space.

So, I have some constraints:

  1. I need to describe objects mathematically, since I can't just load them from disk.
  2. I need to generate the data for a tiny piece of the object without generating the whole thing.
    • NB: if I "zoom out" from the small piece, it has to be consistent with the whole.

Traditional fractals have the downside that they're not very "controllable". You can explore them, but it's hard to say "this part should go there, or have this density, or such-and-such visual quality".

At least in some cases, I want a more "top-down" generation of the data than a fractal-style function typically provides.

Example

Consider a really long noodle laid out on a table.

It has twists and coils (some randomness), but generally goes from point A to point B. So this might satisfy a top-down goal of "draw a line from A to B with some interesting randomness along the way."

How might I generate such a noodle, mathematically?

With just a plain straight line, it satisfies (1) and (2) above, but it's not very interesting.

I could imagine some kind of guided random walk (start at A and head towards B), but that doesn't work because the next values are dependent upon the previous ones. This would break constraint (2) above.

I could imagine taking the straight line, then perturbing it with some noise function(s). Maybe something like Perlin noise, or overlaid random sine waves, etc. Really, I could take any little randomizing "core" and repeat it with modular arithmetic. But this is all periodic. If the noodle is long enough (or the random noise period is short enough), then you will see repeats, which I'd like to avoid.

My Question

Mostly, I'm looking for help in getting the right terminology, so I can search for what I want more effectively.

I think I want functions that are:

  • non-recursive
    • Is this the right term to cover point (2) above?
  • aperiodic
  • (pseudo-)random
    • Consider the BPP formula for calculating digits of π in isolation — it is pseudo-random and satisfies (1) and (2) above and is aperiodic. Is there some name for this sort of function?

I've seen some interesting potentially-relevant stuff around quasicrystals and tilings, too.