Nothing here is animated
The wave, the spiral and the bloom are not keyframes and there is no transition between them. Each rod’s angle is a closed-form function of time: its starting phase plus its own angular speed times the clock. That is the entire simulation.
Everything the viewer sees is what that formula looks like at different amounts of accumulated phase difference. The travelling wave is a small difference, the spiral is a larger one, and the bloom is larger still. The illusion is that a shape is morphing; what is really happening is that constant speeds are drifting apart at a constant rate.
Because there is no integration and no per-frame state, nothing can drift or accumulate error. The offline renderer drives the same clock and reproduces a run bit for bit, which is why a loop that looks right in the preview is guaranteed to look right in the export.

