The Light Weaver
Concept
For this project, I realized that steering algorithms aren’t just for biology, they are perfect tools for generative art. My concept is called “The Light Weaver.” It acts like a simulated long-exposure camera. The “vehicles” are actually photons of light. Instead of just moving around, their movement draws the final piece.
I was inspired by long-exposure light painting photography and the pure geometric abstraction of artists who use lasers and neon. The system runs autonomously to draw a glowing hexagon, but the user’s mouse acts as a “magnetic distortion field” to fray the light lines (using flee). Clicking drops a prism, and the photons use the arrive behavior to pack densely into a glowing singularity.
A highlight of some code that you’re particularly proud of
I am really proud of getting the multi-segment path following to work, specifically inside the follow() function.
for (let i = 0; i < path.points.length - 1; i++) {
let a = path.points[i];
let b = path.points[i + 1];
let normalPoint = getNormalPoint(predictLoc, a, b);
// Check if the normal point is actually on the line segment
let da = p5.Vector.dist(a, normalPoint);
let db = p5.Vector.dist(b, normalPoint);
let lineLen = p5.Vector.dist(a, b);
if (da + db > lineLen + 1) {
normalPoint = b.copy(); // clamp it!
}
Embeded sketch
Milestones and challenges in my process
-
Milestone 1: Getting a single vehicle to follow a straight line.

-
Challenge 1: Upgrading from a single line to a multi-segment Hexagon. At first, my vehicles kept flying off the corners because they were calculating normal points on infinite lines instead of clamping to the vertices.
-
Milestone 2: Implementing the long-exposure visual.

-
Challenge 2: I struggled to make it look like light instead of solid shapes. I realized that by changing
show()to draw lines fromprevPostopos, usingblendMode(ADD), and drawing the background with an alpha value of 12 (background(5, 5, 5, 12)), I could get that perfect glowing trail effect.
Reflection and ideas for future work or improvements
This project completely changed how I look at steering behaviors. I realized that the math of “intention” and “steering” can be applied to abstract drawing tools, not just physical simulations.
For future improvements, I’d love to make the geometric path dynamic, maybe the hexagon slowly rotates over time, or pressing the spacebar adds more vertices to the path to make it a more complex polygon. I would also love to try tying the maximum speed or the path radius to an audio input, so the light trails dance to music.