oneshotlm
Compare all models on this prompt →

Flow-field particles · kat-coder-pro-v2

Using the pre-provided p5.min.js (global p5, instance or global mode), create a full-screen flow-field particle animation: thousands of particles advected by Perlin-noise vectors, leaving fading trails, with colors shifting over time.

⛨ sandboxed Open in new tab ↗
transcript · 8 messages
user

Using the pre-provided p5.min.js (global p5, instance or global mode), create a full-screen flow-field particle animation: thousands of particles advected by Perlin-noise vectors, leaving fading trails, with colors shifting over time.

assistant

I'll create a full-screen flow-field particle animation using p5.js. Let me first check the p5.min.js file to understand how to load it, then build the animation.

bash {"command":"ls -la /workspace/ | grep -i p5"}
toolResult

-rw-r--r-- 1 node node 1034532 Jul 31 08:49 p5.min.js

assistant
write /workspace/index.html (4386 bytes)
toolResult

Successfully wrote 4386 bytes to /workspace/index.html

assistant
read {"path":"/workspace/index.html"}
toolResult

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Flow Field Particle Animation</title> <script src="p5.min.js"></script> <style> * { margin: 0; padding: 0; box-sizing: border-box; } body { overflow: hidden; background: #000; } canvas { display: block; } </style> </head> <body> <script> // Flow field particle system let particles = []; let flowField = []; let cols, rows; let scl = 20; // Scale of flow field grid let zOff = 0; // Time offset for Perlin noise let particleCount = 5000; let hueShift = 0; function setup() { createCanvas(windowWidth, windowHeight); colorMode(HSB, 360, 100, 100, 100); background(0, 0, 0, 100); // Calculate grid dimensions cols = floor(width / scl); rows = floor(height / scl); // Initialize particles for (let i = 0; i < particleCount; i++) { particles.push({ x: random(width), y: random(height), vx: 0, vy: 0, hue: random(360), alpha: random(50, 100) }); } noStroke(); } function draw() { // Semi-transparent background for trail effect background(0, 0, 0, 5); // Update flow field let yOff = 0; for (let y = 0; y < rows; y++) { let xOff = 0; for (let x = 0; x < cols; x++) { // Create angle from Perlin noise let angle = noise(xOff, yOff, zOff) * TWO_PI * 4; flowField[x + y * cols] = angle; xOff += 0.1; } yOff += 0.1; } // Slowly move through noise space zOff += 0.003; // Slowly shift overall hue hueShift += 0.1; // Update and draw particles for (let particle of particles) { // Get flow field angle at particle position let x = floor(particle.x / scl); let y = floor(particle.y / scl); let index = x + y * cols; // If particle is within bounds, get angle if (index >= 0 && index < flowField.length) { let angle = flowField[index]; // Convert angle to velocity let speed = 2; particle.vx += cos(angle) * 0.1; particle.vy += sin(angle) * 0.1; // Limit speed let mag = sqrt(particle.vx * particle.vx + particle.vy * particle.vy); if (mag > speed) { particle.vx = (particle.vx / mag) * speed; particle.vy = (particle.vy / mag) * speed; } // Update position particle.x += particle.vx; particle.y += particle.vy; // Wrap around edges if (particle.x > width) { particle.x = 0; } if (particle.x < 0) { particle.x = width; } if (particle.y > height) { particle.y = 0; } if (particle.y < 0) { particle.y = height; } // Draw particle with shifting color let currentHue = (particle.hue + hueShift) % 360; fill(currentHue, 80, 100, particle.alpha); point(particle.x, particle.y); } } } function windowResized() { resizeCanvas(windowWidth, windowHeight); cols = floor(width / scl); rows = floor(height / scl); background(0, 0, 0, 100); } </script> </body> </html>

assistant

Done! I've created `/workspace/index.html` with a full-screen flow-field particle animation using p5.js. **Features:** - **5000 particles** advected by Perlin-noise flow field - **Fading trails** via semi-transparent background redraw - **Color shifting** over time using HSB color mode - **Wrap-around edges** so particles stay on screen - **Responsive** - adapts to window size changes - **Smooth motion** with velocity limiting and gradual acceleration The animation runs entirely in the browser with no external dependencies beyond the local p5.min.js file.

TAKE IT TO CODE

A single self-contained HTML file — copy it and open in any browser, or reuse the prompt with your own pi-agent run.

RUN

modelkat-coder-pro-v2
vendorKwaipilot
harnesspi-agent
generated2026-07-31

EVALUATION

1/5 blank

Entirely black screen across all frames; no particles, trails, or any input response visible.

off-prompt

Vision grade · anthropic/claude-sonnet-5

MEASUREMENTS

Raw readings from the capture, not a verdict — the grade above is the only judgement. Percentages are how much of the screen changed; the measure under-reports sparse motion on a dark background.

idle motion0.0%
on click0.0%
on drag0.0%
on wheel0.0%
on enter + space0.0%
on arrow keys0.0%
on w/a/s/d0.0%
frame spread0 / 255
console errors0
js errors none

METRICS

runtime16.5s
tokens in11k
tokens out1.3k
cached6.8k
cost / run$0.0033