Interactive Physics Simulation

Free Fall
Physics Lab

A browser-based laboratory where you can see, feel, and record the laws of motion — from pure vacuum to honey-thick viscous fluids.

20m15m10m5m0m
BANG!
5 Experiment Modes Stokes Drag Physics 6 Planets Live Data Log 10 Fluid Media CSV Export

Drop a ball from the top of a 20-metre building. At the exact same instant, throw another ball straight up from the ground. They will always meet — and the time it takes has nothing to do with gravity.

That single counterintuitive fact is the heartbeat of this app. The Free Fall Physics Lab is a fully interactive simulation that lets you explore not just that one result, but five distinct physical scenarios — from perfect vacuum to falling through honey — all running live in your browser with real equations, real numbers, and a data log you can export and graph.

Mode ①

Vacuum
Pure Free Fall

The baseline experiment. No air, no friction — just gravity. A red ball drops from the top of a 20 m building. A teal ball is thrown upward from the ground. They collide somewhere in the middle.

The slider controls give you throw speed (5–30 m/s) and gravity g (1–30 m/s²). Drag gravity all the way to Jupiter levels. Drag it down to the Moon. The collision time doesn't move.

t_collision = H ÷ u
h_collision = H − ½g·(H/u)²
No g in the time equation — ever.
💡 The insight: collision time depends only on building height and throw speed. Gravity only controls where they meet, not when.
20m 15m 10m 5m 0m BANG! 0 m/s 14 m/s
BANG! vacuum ref F_drag v_term = mg/k
Mode ②

Atmosphere
Air Resistance

Reality has drag. Two new sliders appear — drag coefficient k and ball mass m. The app numerically integrates the equations of motion at every millisecond.

Watch the collision point slide downward as you increase drag. The ghost dashed lines show you where the vacuum collision would have been, so you can see the shift directly.

a = −g − (k/m)·v
v_terminal = m·g / k
The ratio k/m governs everything.
🎯 Crank drag to maximum — the balls slow so much they never collide at all. The live overlay still tracks both positions in real time.
Mode ③

Planetary Gravity
Explorer

Six planets. Six gravity values. One big surprise.

Click any planet and the simulation immediately re-runs under that world's gravity. On the Moon the balls drift lazily and collide high up near the top. On Jupiter they snap together near the ground in a fraction of a second.

🌙Moon1.62 m/s²
🔴Mars3.72 m/s²
🌍Earth9.81 m/s²
☁️Venus8.87 m/s²
🔵Neptune11.15 m/s²
🟠Jupiter24.79 m/s²
🪐 Check the data log after running on all six planets with the same throw speed. The collision time column will be identical for every planet. The collision height column will be completely different. The formula t = H/u has no g — and now you can see that in the data.
Mode ④

Galileo's
Challenge

This mode runs two simulations simultaneously: ghost balls (dashed outlines) show the vacuum trajectory, and solid balls show what drag does to the same scenario.

You control drag coefficient k and ball mass m. In vacuum, mass is completely irrelevant — the ghost balls always meet at the exact same point no matter what you set. But once drag is in play, a lighter ball deviates further from the ghost trajectory than a heavy one.

Vacuum: t_c = H/u (no mass!)
With drag: lighter → bigger shift
Effect ∝ k/m
ghost ✦ BANG! drag shift
⚖️ The visual tells the story: ghost balls collide at the same fixed point every single time you change mass. Solid balls drift away from that reference as mass decreases. Galileo was right — but only in vacuum.

The graph panel is especially powerful here. Plot v(t) and you'll see the velocity curves of ghost vs. solid diverge — the solid balls' speed approaches a flat terminal-velocity plateau while the ghost balls keep accelerating linearly.

Mode ⑤

Viscous Media
Oils, Water & Gases

This is the most immersive mode. The simulation column fills with a tinted overlay representing your chosen fluid. Ghost balls still show the vacuum reference. The physics switches to Stokes drag — the real fluid mechanics law for spheres moving through viscous media.

MediumStateViscosity η (Pa·s)Density (kg/m³)
💨 AirGas0.0000181.2
🫧 CO₂Gas0.00001481.84
⚗ SF₆Heavy gas0.00001576.07
💧 WaterLiquid0.0011000
🫒 Olive OilLiquid0.081900
🥥 Coconut OilLiquid0.050924
🌿 Castor OilLiquid0.985961
🧪 GlycerinLiquid1.491261
🍯 HoneyLiquid10.01400
F_drag = 6π·η·r·v (Stokes)
g_eff = g·(1 − ρ_fluid/ρ_ball)
v_terminal = 2r²(ρ_b−ρ_f)g / 9η

Two extra sliders: ball radius r (0.5–10 cm) and ball density ρ (100–8000 kg/m³). These let you explore buoyancy directly — set ball density below the fluid density and the app warns you and shows the ball floating upward.

🍯 Honey v_term ≈ 0.09 m/s in honey t_coll > 40 s vs 1.4s vacuum
🌿 Castor oil vs. honey: in castor oil the ball hits terminal velocity within the first centimetre of travel. In honey it creeps so slowly that a simulation taking 1.4 seconds in vacuum takes over 40 seconds in honey. Use the speed button to watch it without waiting.
Step by Step

How to Use
the Lab

No installation. No account. Open the HTML file in any browser and start experimenting.

1

Pick an Experiment Mode

Use the dropdown at the top of the screen to choose one of the five modes — Vacuum, Atmosphere, Planetary, Galileo's Challenge, or Viscous Media. The control panel on the left updates immediately to show relevant sliders.

2

Adjust the Parameters

Every slider updates the readout next to it in real time. In Vacuum: set throw speed and gravity. In Atmosphere: adjust drag coefficient k and ball mass m. In Fluid mode: pick a medium from the grid, then set ball radius and density.

3

Hit Launch (and watch)

Press ▶ Launch. The live overlay in the simulation shows time, height, and velocity for both balls every frame. Use the speed buttons (¼×, 1×, 2×, 4×) to slow down for viscous fluids or fast-forward to compare scenarios quickly.

4

Toggle Velocity Vectors

Check the "Show velocity vectors" box in the controls panel. Live arrows appear directly on each ball during the animation — the red ball's arrow points down and grows as it falls; the teal ball's arrow starts pointing up, shrinks, reverses, and then grows downward.

5

Read the Graphs

After each run the graph panel (bottom of screen) plots the full trajectory. Switch between Height h(t) and Velocity v(t) tabs. In Galileo and Fluid modes, ghost curves appear alongside solid curves so you can directly compare vacuum vs. drag-affected trajectories.

6

Export Your Data

The data log records every run with a timestamped row for every 0.1 seconds of physics time — height and velocity for both balls simultaneously. Run the same scenario across all six planets or all five modes, then hit ⬇ Export CSV and take the data into Excel or Python to plot, compare, and verify the physics yourself.

Data Recording

Every 0.1 Seconds.
Every Variable.

The data log at the bottom right of the screen captures both height and velocity for both balls together — not one or the other. A run header shows you the exact parameters used, then every 0.1 s of physics time produces one row.

RunModet (s) h_drop (m)h_throw (m) v_drop (m/s)v_throw (m/s)
▶ Run 1 — vacuum | g=9.80 u=14.0
1vacu0.0020.0000.0000.00014.000
1vacu0.1019.9511.3510.98013.020
1vacu0.2019.8042.6041.96012.040
1vacu
1vacu1.43 ★9.9949.99414.0140.006
▶ Run 2 — fluid · Castor Oil | g=9.80 u=14.0
2flui0.0020.0000.0000.00014.000
2flui0.1019.9990.0880.0880.881
★ = collision row  |  both heights match  |  scroll to see all rows

The ★ collision row is always captured — even if the collision doesn't fall exactly on a 0.1 s boundary, the exact moment is recorded and highlighted in amber. Hit ⬇ Export CSV and the entire time series for every run downloads as a single file ready for graphing.

h_drop per row h_throw per row v_drop per row v_throw per row collision flagged ★ run headers with params CSV export all runs
Live Graphs

The h(t) and v(t)
Graph Panel

Every completed run draws its trajectory on a canvas graph below the simulation. Two tab buttons switch between the height and velocity views.

20 15 10 5 0 0.5 1.0 1.5 Time (s) Height (m) ★ (1.43s, 9.99m) h_drop h_throw

In Galileo and Fluid modes the graph shows both the vacuum ghost curves (dashed) and the drag curves (solid) simultaneously — so you can directly measure how far the viscosity shifts the collision point on the time axis.

h(t) tab — two crossed parabolas. They always meet at the same collision height marker ★. In viscous fluids the curves bend and flatten.
v(t) tab — straight lines in vacuum (constant acceleration). In thick oils: near-instant plateau showing terminal velocity reached almost immediately.