Slow burning papers is the title of a song made by Aaron Amado, a music producer based in Brooklyn, NY. Aaron asked me to create an interactive music video on the sunset/sunrise theme. The interactive animation below was coded in C++ using openFrameworks, intending to provide an organic and fluid looking experience to match the rhythm of the song.
In order to simulate the motion of objects in the real world, I created a particle class which follows the kinematics equations. The animation below was made by setting an initial velocity to the particle and reducing its speed, frame by frame, to simulate a viscous medium.
Making use of Newton's second law of motion, it is then possible to apply forces to the particle.
Once we have a particle class which can react to forces, we can now create a damped harmonic oscillator which pulls the particle to some specific point (represented here as a little red dot).
If instead of locking the particle to a fixed point we connect it to another particle, which in turn is also connected to the first one, we can now have a pair of particles that interact with each other and can freely move on the screen.
Following the same logic we can create a chain of particles.
As shown above, it is not guaranteed that the chain will remain in a uniform configuration. To make sure we can have that, we can add, for each particle, another connection to a fixed point.
In this way, we can dispose the particles in any configuration we wish while still having some freedom to move them around and interact with their neighbour particles.
We can then use the position of the particles as the vertices of a polygon.
In order to have a visually smoother connection between the particles, we can use the Centripetal Catmull-Rom spline (red) instead of connecting them with straight lines (black).
This is how it looks after coloring the shape (created using the Centripetal Catmull-Rom spline).
And this is how it looks if we use shaders to create a smooth color gradient.
The colors were chosen based on different sunset shades and the movement was intended to provide a feeling of relaxation. The interactive animation can also be used for live presentations by changing the input methods to, for example, audio, kinect, and cameras. The code was developed in C++ using openFrameworks and can be found on this repository.