An open API service indexing awesome lists of open source software.

https://github.com/albertocuadra/fbm

Generate patterns using the fractional Brownian motion
https://github.com/albertocuadra/fbm

brownian-motion cover fbm fractal fractional-brownian-motion matlab noise phd-thesis

Last synced: 7 months ago
JSON representation

Generate patterns using the fractional Brownian motion

Awesome Lists containing this project

README

          

# Fractional Brownian Motion (FBM) Generator

[![View Fractional Brownian Motion Generator on File Exchange](https://www.mathworks.com/matlabcentral/images/matlab-file-exchange.svg)](https://in.mathworks.com/matlabcentral/fileexchange/128649-fractional-brownian-motion-generator)

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:

```matlab
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
* [1] M. McGuire: https://www.shadertoy.com/view/4dS3Wd
* [2] I. Quilez: https://iquilezles.org/articles/fbm
* [3] P. Gonzalez-Vivo & J. Lowe: https://thebookofshaders.com/13
* [4] SVGStorm: https://svgstorm.com/app
* [5] Inkscape: https://inkscape.org