Skip to content

Generate patterns using the fractional Brownian motion

License

Notifications You must be signed in to change notification settings

AlbertoCuadra/fbm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fractional Brownian Motion (FBM) Generator

View Fractional Brownian Motion Generator on File Exchange

This code generates patterns using the fractional Brownian motion (FBM), a mathematical technique used to create fractal-like images. The code is inspired in the well-documented posts from M. McGuire [1], I. Quilez [2], and P. Gonzalez-Vivo & J. Lowe [3].

The code was used to create the cover of my PhD thesis titled Development of a wide-spectrum thermochemical code with application to planar reacting and non-reacting shocks.

The process to generate the cover was as follows:

  1. Get an image that mimics turbulence using the script.
  2. Vectorize the image using SVGStorm [4]. This will homogenize the image without the need to generate a large image.
  3. Post-process the image using Inkscape [5].

Preview

Usage

The function can be called with optional name-pair arguments, such as:

  • zoom (float): Zoom factor of the image.
  • octaves (float): Number of octaves.
  • resolution (float): Resolution of the image (width, height) in pixels.
  • palette (float): Colormap of the image, e.g., summer or winter.
  • ntimes (float): Number of images to generate.
  • velocity (float): Velocity of the pattern.
  • direction (float): Direction of the pattern (x, y).

Examples:

fbm()
fbm('resolution', [640, 360])
fbm('resolution', [640, 360], 'zoom', 0.5)
fbm('resolution', [640, 360], 'zoom', 0.5, 'octaves', 4)
fbm('resolution', [640, 360], 'zoom', 0.5, 'octaves', 4, 'ntimes', 1000)
fbm('resolution', [640, 360], 'zoom', 0.5, 'octaves', 4, 'ntimes', 1000, 'velocity', 5)
fbm('resolution', [640, 360], 'zoom', 0.5, 'octaves', 4, 'ntimes', 1000, 'velocity', 5, 'palette', 'winter')

References