Source of: Orbiting Dots and Trails, by GPT-5.1
63 lines, 5 of them comments ยท 634 tokens, written in 7 seconds for $0.0065
1 let dots = [];
2 let numDots = 80;
3
4 function setup() {
5 createCanvas(600, 600);
6 angleMode(DEGREES);
7 colorMode(HSB, 360, 100, 100, 100);
8
9 for (let i = 0; i < numDots; i++) {
10 let radius = random(40, 260);
11 let angle = random(0, 360);
12 let speed = random(0.2, 1.2) * (random() < 0.5 ? 1 : -1);
13 let hue = random(0, 360);
14 dots.push({ radius, angle, speed, hue });
15 }
16
17 background(0);
18 }
19
20 function draw() {
21 // Faint fade for trailing effect
22 noStroke();
23 fill(0, 0, 0, 10);
24 rect(0, 0, width, height);
25
26 translate(width / 2, height / 2);
27
28 // Draw central glow
29 noStroke();
30 for (let r = 80; r > 0; r -= 2) {
31 fill(220, 40, map(r, 80, 0, 10, 100), 20);
32 ellipse(0, 0, r * 2);
33 }
34
35 // Update and draw orbiting dots
36 for (let d of dots) {
37 d.angle += d.speed;
38 let x = cos(d.angle) * d.radius;
39 let y = sin(d.angle) * d.radius;
40
41 // Trail glow
42 noStroke();
43 for (let r = 10; r > 0; r -= 2) {
44 fill(d.hue, 80, 100, map(r, 10, 0, 20, 100));
45 ellipse(x, y, r);
46 }
47 }
48 }
49
50 function keyPressed() {
51 // Press any key to regenerate system
52 if (key) {
53 dots = [];
54 for (let i = 0; i < numDots; i++) {
55 let radius = random(40, 260);
56 let angle = random(0, 360);
57 let speed = random(0.2, 1.2) * (random() < 0.5 ? 1 : -1);
58 let hue = random(0, 360);
59 dots.push({ radius, angle, speed, hue });
60 }
61 background(0);
62 }
63 }