The Wing Nut That Flips in Space
Yesterday I dreamed a machine. Today I tried to make it flip.
Previously
In the last post, I built three simulations of an offset gyroscopic drive — spinning masses on an asymmetric race, producing oscillating forces that cancel over a full revolution. Counter-rotation killed the Y-axis wobble. Pulsing the spin speed broke the time symmetry and showed non-zero average force, but the Euler integration wasn't clean enough to trust the magnitudes.
The open questions were: RK4 integration, cam-shaped races, and 3D dynamics. This post tackles all three — but from a direction I didn't expect.
The Idea
I was thinking about the counter-rotating pair. Equal force in both directions. Perfect cancellation. And then I remembered the wing nut.
The Dzhanibekov effect. A spinning object in microgravity, rotating around its intermediate axis of inertia, periodically flips 180 degrees. It was filmed on the Soviet space station in 1985 — a wing nut tumbling through the air, suddenly reversing its orientation, then continuing as if nothing happened. Repeating. Endlessly.
It's not a mystery — it's the intermediate axis theorem. A rigid body with three distinct moments of inertia is unstable when spinning around the middle one. The instability grows until the body flips, then the process repeats. The flip is free. No energy input. No external torque. Just geometry and angular momentum.
The thought was simple: the counter-rotating drive produces an oscillating force in the body frame. The Dzhanibekov flip periodically reverses the body's orientation in the lab frame. If you could synchronise the flip with the force oscillation — so the body flips exactly when the force would change direction — the two reversals cancel and the force always points the same way.
A natural, passive, energy-free directional valve.
Building the 3D Simulation
This needed proper 3D rigid body dynamics. Quaternion rotation, Euler's equations, RK4 integration. No more 2D shortcuts.
The setup: a housing with principal moments of inertia I1 < I2 < I3, spinning around the intermediate axis (I2). Inside, two counter-rotating assemblies of three offset masses each, spinning at constant rate relative to the housing.
The force calculation uses the same approach as the 2D sims — compute centre of mass of the balls, differentiate twice for acceleration, apply Newton's third law for the housing reaction force. But now the body-frame force gets rotated to the lab frame through the quaternion at each timestep.
The key output: force on the housing in the lab frame, over time, through multiple Dzhanibekov flips. If the concept works, the lab-frame force should show a persistent bias in one direction.
First Run
Housing inertia [5, 10, 18], tumble rate 1 rev/s, internal spin 3 rev/s, 0.3m offset. Ten seconds of simulated dynamics.
Four clean Dzhanibekov flips. Flip period about 2.5 seconds. Force oscillation period about 111 milliseconds. Ratio: 22 to 1.
The body-frame force averaged to zero — exactly as expected. The counter-rotating pair cancels perfectly.
The lab-frame force? The running average hovered around zero. The cumulative impulse oscillated but didn't drift. No net thrust.
The problem was immediately visible: the force completes 22 full oscillation cycles during each flip. By the time the body reverses orientation, the force has already averaged itself out many times over. The flip is too slow to act as a valve for the fast-oscillating force.
The Parameter Sweep
Maybe the wrong parameters. Maybe there's a resonance — a combination of spin rate, tumble rate, and inertia ratios where the flip period matches the force period.
92 simulations. Three sweeps.
Sweep 1 — six spin rates crossed with five tumble rates, baseline inertia. Maps the landscape.
Sweep 2 — seven inertia configurations crossed with six tumble rates. Narrow inertia spreads produce faster flips (the instability grows quicker when the moments are close together). The target: match the flip period to the force period.
Sweep 3 — twenty fine-tuned combinations targeting low flip-to-force ratios. Slow spin rates for long force periods. Fast tumble with narrow inertia for short flip periods.
The closest to perfect resonance: spin 0.5 rev/s, tumble 8 Hz, inertia [9.5, 10, 10.5]. Flip period 664ms, force period 667ms. Ratio: 1.00.
Its average lab-frame force: 0.018 Newtons. Against peaks of hundreds.
The configuration with the highest average force (11.1N) had only 5 flips — meaning the average was dominated by incomplete cycles at the window edges. The convergence test confirmed it: every single configuration showed the average trending toward zero with longer integration time.
Resonance doesn't help. The force averages out regardless.
The Cam Profile
One more idea. The circular race produces smooth, sinusoidal force oscillations. Easy to average to zero. What if the race was cam-shaped — producing sharp force spikes instead of gentle waves?
An impulsive force is harder to average out than a smooth one. If the spike is brief enough that it all lands while the body is oriented one way, and the body flips during the quiet phase between spikes, the lab-frame force might bias.
I modified the race geometry with a tuneable cam profile — a raised cosine bump with adjustable sharpness. At n=2, it's a gentle bulge. At n=32, it's a needle-thin spike.
| Profile | Peak Force | Crest Factor | Avg Lab Force | |---------|-----------|-------------|---------------| | Circular | 223N | 1.4 | 0.14N | | Gentle (n=2) | 1,100N | 1.5 | 0.64N | | Sharp (n=8) | 2,368N | 2.1 | 0.99N | | Spike (n=16) | 4,216N | 2.5 | 1.31N | | Extreme (n=32) | 7,911N | 3.0 | 2.01N |
The peak forces scaled dramatically — nearly 8,000 Newtons at extreme sharpness. The crest factor climbed from 1.4 to 3.0. But the convergence test told the truth: every profile showed "CONVERGING TO ZERO." The residuals were just larger because the spikes create bigger incomplete-cycle artifacts.
The body-frame baseline confirmed it. Every cam profile averaged to less than 0.005N in the body frame, against peaks of thousands. If the body-frame force is symmetric, no rotation can create a lab-frame bias.
What I Learned
-
The Dzhanibekov effect is real and modelable. Quaternion dynamics with RK4 reproduces the intermediate axis instability cleanly. The flip period is deterministic and tuneable through inertia ratios.
-
Resonance doesn't produce thrust. Even when the flip period exactly matches the force period, the lab-frame force averages to zero. The flip is a smooth rotation, not an instantaneous switch — the force drifts through every phase during the transition.
-
Pulse shaping doesn't help. Cam profiles produce spectacular force spikes but don't change the integral over a complete revolution. A symmetric race produces symmetric body-frame forces regardless of the time-domain waveform.
-
The convergence test is the truth detector. If the average force decreases with longer integration time, it's a finite-window artifact. Every configuration showed this pattern.
-
Internal forces cannot accelerate the centre of mass. This is Newton's third law, and no amount of clever geometry or rotational dynamics can circumvent it. The housing pushes the balls and the balls push the housing. The total is always zero.
-
Closing doors with evidence has value. Each variant — resonance tuning, cam profiles, parameter sweeps — eliminated a specific "what if" with numerical proof rather than assumption. That's not failure. That's method.
What's Next
The Dzhanibekov angle is closed. The force symmetry is in the body frame, and no external rotation can break an internal symmetry.
To get actual propulsion, you need one of three things: expel mass, interact with an external field, or find new physics. The interesting frontier might be coupling the mechanical asymmetry with electromagnetic effects — using the Dzhanibekov flip to redirect momentum exchange with an external field rather than trying to bootstrap internal forces.
Or it stays as what it is: a dream that taught me quaternion dynamics, rigid body simulation, and 92 different ways a wing nut can't fly.
Both outcomes are fine.
92 simulations. Three dead ends. One clean answer. Built with Claude Code. Published at indigo-nx.com.