https://github.com/richmit/mraster
Simple C++ off screen raster graphics library
https://github.com/richmit/mraster
computer-graphics fractal fractal-images mandelbrot mandelbrot-fractal math raster-graphics
Last synced: about 1 month ago
JSON representation
Simple C++ off screen raster graphics library
- Host: GitHub
- URL: https://github.com/richmit/mraster
- Owner: richmit
- License: bsd-3-clause
- Created: 2015-11-21T21:03:13.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2025-04-01T21:40:46.000Z (2 months ago)
- Last Synced: 2025-04-01T22:24:47.610Z (2 months ago)
- Topics: computer-graphics, fractal, fractal-images, mandelbrot, mandelbrot-fractal, math, raster-graphics
- Language: C++
- Homepage:
- Size: 6.5 MB
- Stars: 16
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.org
- License: LICENSE.TXT
- Roadmap: docs/roadmap.html
Awesome Lists containing this project
README
* Introduction
*MRaster* is a very simple C++ library for generating raster images --
espeically things like fractals.It is designed to be easy enough for beginners, but advanced enough
for experts. It integrates well into existing code, uses pure C++20,
requires no external dependencies, and is quite fast.Some examples of what can be done with *MRaster*:
- [[https://www.mitchr.me/SS/mandelbrot/index.html][Mandelbrot Mountains]]
- [[https://www.mitchr.me/SS/newton/index.html][Newton Fractal]]
- [[https://www.mitchr.me/SS/doublePendulum/index.html][Double Pendulum]]
- [[https://www.mitchr.me/SS/brusselator/index.html][The Brusselator]]
- [[https://www.mitchr.me/SS/BurningShip/index.html][Burning Ship]]
- [[https://www.mitchr.me/SS/multibrot/index.html][Multibrot Fractals]]
- [[https://www.mitchr.me/SS/mandelbrotCount/index.html][Mandelbrot Iteration Movie]]
- [[https://www.mitchr.me/SS/tricorn/index.html][Tricorn Fractal]]
- [[https://www.mitchr.me/SS/collatz/index.html][Collatz Fractal]]
- [[https://www.mitchr.me/SS/tippets/index.html][Tippets Fractal]]
- [[https://www.mitchr.me/SS/biomorphMorph/index.html][Dancing Biomorphs]]
- [[https://www.mitchr.me/SS/PickoverPopcorn/index.html][Pickover Popcorn]]
- [[https://www.mitchr.me/SS/mandelbrotBiomorph/index.html][Mandelbrot Biomorph]]
- [[https://www.mitchr.me/SS/mandelbrotInv/index.html][Inverted Mandelbrot]]
- [[https://www.mitchr.me/SS/mandelbrotWave/index.html][Mandelbrot Wave]]
- [[https://www.mitchr.me/SS/swirl/index.html][Peter de Jong Fractal]]
- [[https://www.mitchr.me/SS/sic/index.html][Symmetric Fractals]]
- [[https://www.mitchr.me/SS/tinkerbell/index.html][Tinkerbell]]
- [[https://www.mitchr.me/SS/barrymartin/index.html][Hopalong Fractals]]
- [[https://www.mitchr.me/SS/ChaosGame/index.html][Chaos Game]]
- [[https://www.mitchr.me/SS/LevyCurveChaosGame/index.html][Chaos Game Levy Curve]]
- [[https://www.mitchr.me/SS/AGasket/index.html][Apollonian Gasket]]
- [[https://www.mitchr.me/SS/atorus/index.html][Attracting Torus]]
- [[https://www.mitchr.me/SS/julia/index.html][Julia Sets]]
- [[https://www.mitchr.me/SS/circles2/index.html][Circle Art]]
- [[https://www.mitchr.me/SS/desktops/index.html][Some desktop backgrounds]]For a bit more detail about *MRaster*: [[https://richmit.github.io/mraster/index.html]]
A quick start guide: [[https://richmit.github.io/mraster/QuickStart.html]]
Color schemes included in *MRaster*: [[https://richmit.github.io/mraster/ColorSchemes.html]]
API Documentation: [[https://www.mitchr.me/SS/mraster/doc-lib/autodocs/html/index.html]]
Example Documentation: [[https://www.mitchr.me/SS/mraster/doc-examples/autodocs/html/index.html]]
The code: [[https://github.com/richmit/mraster/]]
* Getting Started
For more detail read the [[https://richmit.github.io/mraster/QuickStart.html][quick start guide]]!
To use this code, *TWO* repositories must be cloned -- this one and a
basic mathematical library. The mathematical library should then be
configured. Finally you can build the examples in this repository.
This all might be done on the command line with linux, MacOS, or
windows (MSYS2 or WSL) with a sequence of commands like the following:#+begin_src sh :exports code :eval never
git clone 'https://github.com/richmit/MRMathCPP.git' # Download MRMathCPP
cd MRMathCPP/build # Change directory to 'build'
cmake .. # Configure the build system with cmake
cd ../.. # Change directory back to where we started
git clone 'https://github.com/richmit/mraster.git' # Download MRaster
cd mraster/build # Change directory to 'build'
cmake .. # Configure the build system with cmake
cmake --build . -t examples # Build all the examples
#+end_srcWhile I normally work on the command line, CMake is fully compatible
with several IDEs including Microsoft Visual Studio. For more on this
topic, see the [[https://richmit.github.io/mraster/QuickStart.html][quick start guide]].* Versions
This library has defined "releases" intended to identify a stable
snapshot of the code -- they are tagged in git with a tag name
starting with a "v". If you are looking for stability, then get the
latest one.That said, I try to only commit complete, working code. So I think
it's pretty safe for most people to just pull =HEAD= -- i.e. just do a
regular git clone.The [[https://richmit.github.io/mraster/changelog.html][change log]]
has entries for each release as well as a section for what has changed
on =HEAD= since the last release.[[file:docs/pics/gallery/apollonian_gasket_2D_01_250.jpg][file:docs/pics/gallery/apollonian_gasket_2D_01_250.jpg]]