Initial angular velocity ω (body frame)

Default: spin mostly about the intermediate axis (y) with a tiny nudge on the other two — the tennis-racket setup.

Inertia tensor I (principal moments)

Instability happens when spinning about the axis with the middle moment of inertia (here I₂), regardless of which axis that is.

Applied torque τ (body frame, constant)

Nonzero torque with existing spin gives precession (L drifts, ω swings to chase it).
Uncheck to see what cheap game-engine physics does: axes decouple, no tennis-racket flip, no precession — each ω component just responds to torque/I linearly.

Integration

Camera

Controls

State

The equations behind the animation

Everything on the Simulation tab comes from integrating one vector ODE for ω, plus one kinematic ODE for orientation. Numbers below update live from the sidebar & each Step.

1. State

ω = (ω₁, ω₂, ω₃)T  —  angular velocity, body frame
I = diag(I₁, I₂, I₃)  —  inertia tensor, principal axes
L = Iω = (I₁ω₁, I₂ω₂, I₃ω₃)T  —  angular momentum, body frame

2. Newton–Euler law (the master equation)

dL/dt |world = τ

I is only diagonal in the body frame, which itself rotates — transporting the world-frame law into the rotating body frame introduces a correction term, giving the equation actually integrated each step:

I · dω/dt  +  ω × (Iω)  =  τ
dω/dt  =  I−1 [ τ  −  ω × (Iω) ]

The cross-product term ω×(Iω) is the entire gyroscopic effect: it vanishes only if ω and Iω are parallel (symmetric top spinning on-axis) — otherwise it couples all three axes together.

3. Component form — Euler's equations

I₁ ω̇₁  =  (I₂ − I₃) ω₂ ω₃  +  τ₁
I₂ ω̇₂  =  (I₃ − I₁) ω₃ ω₁  +  τ₂
I₃ ω̇₃  =  (I₁ − I₂) ω₁ ω₂  +  τ₃

These nonlinear terms are what makes an asymmetric object spun about its intermediate-inertia axis tumble unpredictably (the tennis-racket / Dzhanibekov effect). Toggle "coupling" off in the sidebar (dimmed above when off) to see cheap-engine physics: each axis then obeys its own linear dωdt = τ/I, fully decoupled, and the flip never happens.

4. Live substitution (current state)

5. Orientation kinematics

q̇  =  ½  q ⊗ (0, ω)

Integrated exactly each step via the axis-angle exponential map: qn+1 = qn ⊗ exp(½ ωmid dt), then renormalized — this is what rotates the rectangle you see on the Simulation tab.