MRaster examples 22.0.0.0
Image Processing Library
Loading...
Searching...
No Matches
lorenz_mM.cpp File Reference

For each pixel, simulate a double pendulum system over 2sec and color the pixel according to the pendulum end state. More...

Go to the source code of this file.

Detailed Description

For each pixel, simulate a double pendulum system over 2sec and color the pixel according to the pendulum end state.

Author
Mitch Richling https://www.mitchr.me
Standards
C++20
Details

This code makes a movie of time steps of the solution the Lorenz system. Each pixel is a complete simulation of the Lorenz system with the pixel's color encoding the system state (red for x, green for y, and blue for z). The initial values for x range from -20 to 20, for z they range from 20 to 50, and y is always zero.

For reference the Lorenz system is defined by:

\[ \begin{array}{lcl} \frac{dx}{dt} & = & a(y-x) \\ \frac{dy}{dt} & = & x(b-z)-y \\ \frac{dz}{dt} & = & xy-cz \end{array} \]

Traditional parameter values are:

\[ \begin{array}{lcc} a & = & 10 \\ b & = & 28 \\ c & = & \frac{8}{3} \end{array} \]

And the traditional initial conditions are:

\[ \begin{array}{lcc} x & = & \frac{1}{10} \\ y & = & 0 \\ z & = & 0 \end{array} \]

This program produces an image sequence which may be rendered into a movie with ffmpeg.

       ffmpeg -y -framerate 15 -i lorenz_mM_%4d.tiff -vf "scale=trunc(iw/4)*2:trunc(ih/4)*2" -c:v libx264 -crf 30 -b:v 0 -preset veryslow lorenz_mM_100_crf30.mp4;
       ffmpeg -y -framerate 15 -i lorenz_mM_%4d.tiff -vf "scale=trunc(iw/4)*2:trunc(ih/4)*2" -c:v libx264 -crf 20 -b:v 0 -preset veryslow lorenz_mM_100_crf20.mp4;
       ffmpeg -y -framerate 15 -i lorenz_mM_%4d.tiff -vf "scale=trunc(iw/4)*2:trunc(ih/4)*2" -c:v libx264 -crf 10 -b:v 0 -preset veryslow lorenz_mM_100_crf10.mp4;
       ffmpeg -y -framerate 15 -i lorenz_mM_%4d.tiff -vf "scale=trunc(iw/4)*2:trunc(ih/4)*2" -c:v libx264 -crf  3 -b:v 0 -preset veryslow lorenz_mM_100_crf03.mp4;
       ffmpeg -y -framerate 15 -i lorenz_mM_%4d.tiff -vf "scale=trunc(iw/4)*2:trunc(ih/4)*2" -c:v libx264 -crf  0 -b:v 0 -preset veryslow lorenz_mM_100_crf00.mp4;

Definition in file lorenz_mM.cpp.