Pendulum workshop (3D)

A Blender-built gantry and brass bob: swing it as far as you like, add friction and a drive, and see where the small-angle formula breaks.

Switch to 2D

Presets

Playback

Pendulum

Camera

Layers

Quality

Model check

The science

Why the textbook formula is only half the story

A point-mass pendulum of length L obeys θ'' + bθ' + (g/L) sinθ = a cos(Ωt). For small swings sinθ ≈ θ and the period is the familiar T0 = 2π√(L/g), independent of the swing size. For a real swing the restoring torque is weaker than θ at large angles, so the pendulum is slower: the exact undamped period is T = 2π√(L/g) / AGM(1, cos(θ0/2)), a complete elliptic integral computed here with the arithmetic-geometric mean. At 60 degrees it is about 7 % longer than T0; near 180 degrees it grows without limit.

Damping and Q. With friction b the swing dies away as e-bt/2; the quality factor Q = ω0/b counts roughly how many swings it takes. Driving. A steady push at frequency Ω builds an amplitude Θ = a / √((ω0² - Ω²)² + (bΩ)²) for small angles: tallest at Ω close to ω0, which is resonance. At large angles the resonance bends because the period depends on the amplitude.

The 3D page and the 2D page run the same module (the integrator, the exact period and the checks are one and the same code), so the numbers match.

Honest simplifications

The bob is a point mass on a rigid massless rod; damping is linear in the angular velocity, the drive is a pure cosine in angular acceleration, and there is no pivot friction, air drag proportional to speed squared or rod mass. The yellow ghost shows the small-angle model started from the same state, so the gap between the two is the error of that approximation. The bob is drawn larger than a real bob so it can be seen.

Model checks (run live)

RK4 period at 60 degrees against the elliptic-integral value; damped small-angle motion against its closed form; the driven steady-state amplitude against the formula; energy drift after 20 periods at 120 degrees; and the 1-degree period against T0.

Loading model...
Loading Blender model...
Angle against time: full model and small-angle model
Phase portrait: angular speed against angle
Period against starting angle
Made with 🟠 Blender · Three.js