A collision simulator for two carts sliding along a line. Give each a mass and a velocity, dial the elasticity from a perfectly elastic bounce (e = 1) down to a dead-stick inelastic hit (e = 0), then launch. Each cart carries a labeled velocity arrow and momentum arrow, the readouts compare total momentum and kinetic energy before and after, and an energy-bar chart shows exactly how much kinetic energy is lost. Momentum holds steady for every setting; kinetic energy only survives a perfectly elastic hit. It all runs on your device.
You are in the Physics lab.
Total kinetic energy before and after the impact. The green bar is the energy the carts keep; the red slice on the After bar is the energy lost to heat and deformation. At e = 1 the red slice vanishes; at e = 0 the loss is as large as it can be for these masses and speeds.
What every arrow, readout and bar on the screen is telling you.
Above every cart is a solid velocity arrow labeled v in m/s — it points the way the cart is heading and grows with its speed. Below the cart is a dashed momentum arrow labeled p in kg·m/s, which is the mass times that velocity. A heavy, slow cart can carry the same momentum as a light, fast one, so watch how the two arrows differ in length. The mass of each cart is printed right under it.
The readouts show Momentum before and Momentum after — and they are identical, because a collision only trades momentum between the carts, never creates or destroys it. Adding the two dashed arrows head to tail before the impact gives the same signed total as adding them afterward. That is conservation of momentum, and it holds for every elasticity you pick.
The elasticity e decides how much kinetic energy survives. The bar chart puts KE before next to KE after; the red slice is the KE lost to heat and deformation, also shown as a number and a percentage. Slide e to 1 and the red slice disappears — a perfectly elastic hit. Slide it to 0 and the carts stick, and the loss is as large as momentum conservation allows. The badge names the regime: Elastic, Partially inelastic or Perfectly inelastic.
Conservation of momentum, a single elasticity setting, and two equations solved at the instant of contact.
Each cart carries a momentum equal to its mass times its velocity, and the collision can only redistribute it. The signed total is fixed: m₁u₁ + m₂u₂ = m₁v₁ + m₂v₂, where the u are the incoming velocities and the v the outgoing ones. This single equation holds no matter how bouncy or sticky the impact is, which is why the two momentum readouts always match.
Momentum alone is not enough to fix both outgoing velocities, so we add the elasticity e. It sets the speed the carts separate with as a fraction of the speed they approached with: v₂ − v₁ = e(u₁ − u₂). At e = 1 they rebound at full relative speed and no kinetic energy is lost; at e = 0 there is no separation and they move off together, the most inelastic hit possible.
Combining the two equations gives a closed form: v₁ = (m₁u₁ + m₂u₂ + m₂·e·(u₂ − u₁)) / (m₁ + m₂) and v₂ = (m₁u₁ + m₂u₂ + m₁·e·(u₁ − u₂)) / (m₁ + m₂). The tool solves these from your slider values, so the momentum and kinetic-energy readouts and the energy bars are the exact predicted outcome — momentum conserved, kinetic energy never rising above its starting value.
Teaching or blogging about physics? You can embed this on your own site free — one line of code, no sign-up.
A ready-to-assign lab using the simulation above. Free to use — nothing to install or sign up for, and no student data leaves the browser.
Record velocities before and after, and note total momentum and total kinetic energy each time.
Momentum is conserved in every isolated collision. Elastic collisions also conserve kinetic energy (objects bounce), while inelastic ones lose kinetic energy to heat and deformation — perfectly inelastic objects stick and move together.
Educators: link or embed this simulation freely in your LMS or course guide.
Put the Collision Simulator on your own page — free, no sign-up, no watermark. It runs entirely in your visitors' browsers. Copy the snippet and paste it into your page's HTML.