This is the 2D counterpart of the flywheel-pair 3D simulator, computed a genuinely different way: instead of reading off a single reaction-torque vector τ = Ω×L for an externally-forced yaw, it integrates the real coupled equations of motion of a platform mounted on torsional springs, carrying a spinning flywheel's angular momentum h. Writing the two small-angle tilt axes as θx, θy:
I·θx″ + c·θx′ + k·θx − h·θy′ = 0
I·θy″ + c·θy′ + k·θy + h·θx′ = 0
The −h·θy′ / +h·θx′ terms are the gyroscopic coupling: tilt-rate on one axis drives torque on the other. Combine them into z = θx+iθy and the pair collapses into one complex oscillator, I·z″+(c+ih)·z′+k·z=0, whose two complex roots are the platform's forward and backward whirl modes — real rotordynamics phenomena, the same effect that splits a spinning rotor's natural frequency into two (like Zeeman/Larmor splitting for mechanical systems).
Kick the mount and the phase-plane trace (θx vs θy) shows the result directly: with one flywheel, h≠0 couples the axes and the disturbance spirals — energy sloshes between θx and θy as it decays. Switch to the counter-rotating pair: h_net = I·ω − I·ω = 0 exactly, the coupling term vanishes, and the trace collapses to a straight line along the kicked axis, decaying with no cross-axis whirl at all — while total stored kinetic energy still doubles, because both wheels still spin.
- Flywheel spin — sets ω, hence h = I_fly·ω for each wheel (I_fly = ½mr², r = 0.12 m fixed).
- Flywheel mass — sets I_fly for each disk.
- Mount stiffness k — the torsional spring rate of the mount; sets the un-coupled natural frequency ω₀=√(k/I).
- Kick mount — imparts a fixed angular-velocity impulse to θx′, exciting free vibration so you can watch it decay.
- Mode toggle — single flywheel (whirl couples both axes) vs. counter-rotating pair (h_net = 0, axes stay independent).
Platform transverse inertia I = 2.0 kg·m² and mount damping c = 1.2 N·m·s/rad are fixed so the whirl-splitting effect stays visible across the whole spin range.