NOC W05 – Resonant Currents
Link: https://editor.p5js.org/King-Raphael/sketches/KXHNqeRWo
1. Introduction
Resonant Currents is a project which focuses on generating visually captivating oscillatory motion and wave patterns. The project simulates a flow field where thousands of particles navigate a dynamic environment influenced by noise functions and additive forces. This results in a 3 different types but continuously evolving animation that mimics natural wave currents.

2. Work Process
Initially, my core concept was to replicate the natural, fluid motion of water currents and waves using mathematical functions such as “noise(“` and trigonometric transformations. And the goal was to blend additive wave principles with particle dynamics, creating an engaging, resonant visual experience.
My experiments involved tweaking parameters like noise increments, base magnitudes, and particle lifespans to achieve the desired fluid aesthetics. The design process included extensive parameter testing to understand how subtle changes can transform the visual output.

The follow() method is central to the project’s dynamics:
-
- Noise-Driven Direction:
For each particle, the method calculates a noise value based on its position, which is then mapped to an angle. This angle determines the direction in which the particle will travel. - Force Calculation:
The method uses the calculated angle to create a directional vector usingp5.Vector.fromAngle(). - Magnitude Modulation:
If enabled, additional noise (via a separate z-offset, which I think it won’t affect the motion since it’s still 2D) is used to modulate the magnitude of the force. This can be adjusted to allow for negative magnitudes and add an element of counter-flow, which results in a more complex and natural motion. - Application of Force:
Finally, the computed force is applied to the particle, influencing its trajectory in a manner that simulates the behavior of natural currents and oscillatory motions.
- Noise-Driven Direction:
Some additional features including keyboard interactions to switch between three different visual modes and to toggle gravity. This allows users to experience various aesthetic outcomes. Besides, particles have a defined lifespan, after which they are reinitialized to keep the animation continuous and dynamic.

3. Reflections & Lessons Learned
The experience of making this project provided me valuable insights into how the noise() function can be harnessed to produce smooth, organic variations. The follow() method, in particular, demonstrated the power of noise-driven dynamics in simulating natural phenomena. The construction of follow() is the core of the simulation. It direct particle movement through calculated forces derived from noise. This method encapsulates the essence of resonant motion by seamlessly blending directionality with fluctuating magnitudes.
Potential enhancements include exploring additional transformation functions and integrating more interactive elements. Further experimentation with color dynamics could also open new avenues for creating even more visually engaging patterns.

