Setup

Curve

t = 2.32 (slider from 0 to 6.28, step 0.01)
a = CurveCartesian((4 * cos((2 * t))) + (5 * cos((5 * t))), (4 * sin((7 * t))) + (3 * sin((4 * t))) + (2 * sin((3 * t))), (2 * sin((3 * t))) + (3 * cos((7 * t))) + (4 * cos((3 * t))), t, 0, (2 * π))
A: a(t)
n: 30
Speed = 0.53 (slider from 0 to 1, step 0.01)
A1 = Sphere(a(t + 1 / 70), 1 / 30)
A2 = Sphere(a(t + 2 / 70), 2 / 30)
A3 = Sphere(a(t + 3 / 70), 3 / 30)
A4 = Sphere(a(t + 4 / 70), 4 / 30)
A5 = Sphere(a(t + 5 / 70), 5 / 30)
A6 = Sphere(a(t + 6 / 70), 6 / 30)
A7 = Sphere(a(t + 7 / 70), 7 / 30)
A8 = Sphere(a(t + 8 / 70), 8 / 30)
A9 = Sphere(a(t + 9 / 70), 9 / 30)
A10 = Sphere(a(t + 10 / 70), 10 / 30)
A11 = Sphere(a(t + 11 / 70), 11 / 30)
A12 = Sphere(a(t + 12 / 70), 12 / 30)
A13 = Sphere(a(t + 13 / 70), 13 / 30)
A14 = Sphere(a(t + 14 / 70), 14 / 30)
A15 = Sphere(a(t + 15 / 70), 15 / 30)
A16 = Sphere(a(t + 16 / 70), 16 / 30)
A17 = Sphere(a(t + 17 / 70), 17 / 30)
A18 = Sphere(a(t + 18 / 70), 18 / 30)
A19 = Sphere(a(t + 19 / 70), 19 / 30)
A20 = Sphere(a(t + 20 / 70), 20 / 30)
A21 = Sphere(a(t + 21 / 70), 21 / 30)
A22 = Sphere(a(t + 22 / 70), 22 / 30)
A23 = Sphere(a(t + 23 / 70), 23 / 30)
A24 = Sphere(a(t + 24 / 70), 24 / 30)
A25 = Sphere(a(t + 25 / 70), 25 / 30)
A26 = Sphere(a(t + 26 / 70), 26 / 30)
A27 = Sphere(a(t + 27 / 70), 27 / 30)
A28 = Sphere(a(t + 28 / 70), 28 / 30)
A29 = Sphere(a(t + 29 / 70), 29 / 30)
A30 = Sphere(a(t + 30 / 70), 30 / 30)
b = true