        started = true;
                    lastTime = performance.now();
                    startTime = lastTime;
                    requestAnimationFrame(animate);
                }
            };
            // 先发一次 0 时间，让 Worker 初始化好 positions
            worker.postMessage({ time: 0, radii: radii, speeds: speeds, centerX: cx, centerY: cy });

            // 动画主循环
            function animate() {
                const now = performance.now();
                const dt 