How fast does a ball bounce back after it hits the ground?
You’ve probably watched a basketball slam into the hardwood and then spring up again, or seen a rubber ball thud on the sidewalk and ricochet a few inches away. What’s really happening in that split‑second? The secret lies in something engineers call the coefficient of restitution (often shortened to COR) That alone is useful..
If you’ve ever tried to predict how high a dropped object will rebound, you’ve already been playing with that number—whether you knew it or not. Below is everything you need to know to calculate the coefficient of restitution, why it matters, and how to avoid the common pitfalls that trip up even seasoned hobbyists Most people skip this — try not to. Turns out it matters..
What Is Coefficient of Restitution
In plain English, the coefficient of restitution is a ratio that tells you how “bouncy” a collision is. It compares the speed (or velocity) of two objects after they hit each other to the speed before the impact. A COR of 1 means a perfectly elastic collision—no kinetic energy is lost, and the objects bounce away with the same speed they arrived with (just reversed direction). A COR of 0 means a perfectly inelastic collision—everything sticks together, and the objects walk away with zero relative speed.
Elastic vs. Inelastic Collisions
- Elastic collision – Think of a superball on a smooth floor. It compresses, stores energy, and then releases it almost entirely, so it nearly returns to its original height.
- Inelastic collision – A lump of clay hitting a wall. The clay flattens, some energy turns into heat and deformation, and the wall barely moves.
Real‑world objects sit somewhere in between. The COR quantifies exactly where Simple, but easy to overlook..
The Basic Formula
[ e = \frac{v_{\text{after}}}{v_{\text{before}}} ]
Where:
- ( e ) = coefficient of restitution (unitless)
- ( v_{\text{after}} ) = relative speed of separation after impact
- ( v_{\text{before}} ) = relative speed of approach before impact
If you’re dealing with a single object dropping onto a massive, immovable surface (like a ball on concrete), the surface’s velocity is essentially zero, so the formula simplifies to the ratio of rebound speed to drop speed Most people skip this — try not to. Surprisingly effective..
Why It Matters
Everyday Applications
- Sports equipment design – A tennis racket’s strings are tuned to a specific COR to give players a predictable “feel.”
- Automotive safety – Crash‑test engineers use COR to model how car bodies crumple and how occupants decelerate.
- Robotics – Legged robots rely on COR calculations to plan stable hopping gaits.
What Goes Wrong Without It
If you ignore COR when designing a bouncing robot, you might end up with a machine that never lifts off or that flies erratically. In sports, the wrong COR can make a ball feel “dead” or “explosive,” ruining the user experience. In short, COR is the hidden knob that bridges theory and the tactile world Turns out it matters..
How It Works (or How to Do It)
Below is a step‑by‑step guide to calculating the coefficient of restitution for a simple drop test. The same principles extend to more complex collisions, just with extra bookkeeping.
1. Gather Your Gear
- Object – a ball, a rubber puck, or any item you want to test.
- High‑speed camera or motion sensor – 1000 fps is nice but not mandatory; a smartphone at 240 fps can work.
- Measuring tape or ruler – to gauge heights.
- Flat, rigid surface – concrete, steel plate, or a thick wooden board.
2. Measure the Drop Height
Pick a convenient height, say 1 meter, and measure from the point where the object’s center of mass starts its fall to the surface. Accuracy matters because the initial velocity depends on the square root of that height Not complicated — just consistent..
3. Compute the Impact Velocity
Assuming negligible air resistance, use the free‑fall equation:
[ v_{\text{before}} = \sqrt{2 g h} ]
- ( g ) ≈ 9.81 m/s² (acceleration due to gravity)
- ( h ) = drop height
For a 1‑meter drop, ( v_{\text{before}} ≈ \sqrt{2 × 9.Here's the thing — 81 × 1} ≈ 4. 43 m/s ) Turns out it matters..
4. Capture the Rebound
Play back the high‑speed footage frame‑by‑frame. That's why identify the moment the object leaves the surface and note its position a few frames later. Measure the vertical distance traveled in those frames and divide by the time interval to get ( v_{\text{after}} ) Simple as that..
If you’re using a motion sensor, it will output the rebound speed directly—skip the manual counting.
5. Plug Into the Formula
[ e = \frac{v_{\text{after}}}{v_{\text{before}}} ]
Suppose the rebound speed you measured is 3.2 m/s. Then:
[ e = \frac{3.2}{4.43} ≈ 0.72 ]
That tells you the ball retains about 72 % of its approach speed after the bounce Surprisingly effective..
6. Verify Consistency
Repeat the test at least three times and average the results. Small variations are normal; they could be due to surface imperfections, spin, or measurement error.
7. Adjust for Angle (If Needed)
If the collision isn’t perfectly vertical, you need the relative velocity along the line of impact. Decompose the velocities into normal (perpendicular) and tangential components. The COR only cares about the normal component:
[ e = \frac{v_{\text{after, normal}}}{v_{\text{before, normal}}} ]
Most hobbyists stay with vertical drops to keep things simple Small thing, real impact..
Common Mistakes / What Most People Get Wrong
Ignoring Energy Loss to Rotation
A spinning ball often loses more kinetic energy to angular momentum than a non‑spinning one. ” The fix? Think about it: if you drop a basketball with a slight spin, the measured rebound height will be lower, and you might incorrectly conclude the material is “less bouncy. Keep the object free of spin, or measure the normal component only Small thing, real impact..
Worth pausing on this one.
Using Height Instead of Velocity Directly
A frequent shortcut is to compare rebound height to drop height and call that the COR. That only works if you assume the same gravitational conversion on both legs, which is okay for vertical drops and when air resistance is negligible. But if you’re dealing with inclined planes or different gravitational fields (think lunar experiments), you need the velocity ratio, not the height ratio.
Forgetting the Surface’s Role
The COR is technically a property of both bodies in contact. A superball on a steel plate will have a higher COR than the same ball on a carpet. Think about it: yet many guides treat COR as an intrinsic material constant. In practice, you should always specify the surface.
Rounding Too Early
If you round the impact velocity to 4 m/s before dividing, you’ll get a noticeably lower COR (e.g., 3.2/4 = 0.80 vs. 3.2/4.Plus, 43≈0. 72). Keep extra decimal places until the final step Most people skip this — try not to..
Assuming COR Is Constant Across Speeds
Materials can behave differently at different impact speeds. Think about it: a rubber ball may have a COR of 0. Plus, 85 at a gentle drop but drop to 0. Here's the thing — 65 when slammed at 5 m/s. If you only test one speed, you’ll miss that nuance.
Practical Tips / What Actually Works
- Use a smooth, level surface. Even a tiny bump changes the normal direction and skews results.
- Mark the exact drop point. A laser pointer can help you keep the ball’s center over the same spot each trial.
- Calibrate your camera. Set the frame rate, resolution, and make sure the lens isn’t distorted. A ruler in the frame helps convert pixels to meters.
- Control temperature. Some polymers become softer (higher COR) when warm and harder (lower COR) when cold. Let the test piece equilibrate to room temperature.
- Document everything. Note the ball’s brand, diameter, mass, surface texture, and the exact height. Future you (or a reader) will thank you.
- Try multiple heights. Plotting COR versus impact speed often reveals a trend line; you can then extrapolate for speeds you can’t easily test.
- Consider a drop tower. If you need repeatable, high‑precision data, a simple vertical guide rail reduces lateral wobble and improves consistency.
FAQ
Q: Can I calculate COR without a camera?
A: Yes. Use a spring‑scale or a force sensor to capture the impact force curve, integrate to get impulse, and compare the impulse before and after. It’s more involved but works if video isn’t available Still holds up..
Q: Does mass affect the coefficient of restitution?
A: For two objects of vastly different mass (like a ball and a concrete floor), the heavier body’s motion is negligible, so COR appears mass‑independent. When masses are comparable, the COR can change slightly because each body deforms differently.
Q: How does COR differ from “bounciness” in video games?
A: Game engines often use a simplified COR value to compute post‑collision velocities, but they may also add “drag” or “stickiness” factors that don’t exist in physics. The game’s COR is more of a design parameter than a measured property.
Q: What’s a typical COR for a basketball?
A: Freshly inflated, a regulation basketball usually has a COR around 0.75–0.80 on a hardwood floor. It drops as the ball ages or the temperature falls.
Q: Is there a way to increase a material’s COR?
A: Surface treatments (polishing, coating) reduce energy loss to friction. Adding internal springs or using materials with higher elastic modulus (like certain thermoplastic elastomers) also boosts COR It's one of those things that adds up..
So there you have it—a hands‑on, no‑fluff guide to calculating the coefficient of restitution. Whether you’re a weekend tinkerer building a hopping robot, a coach fine‑tuning a basketball, or just a curious mind wanting to know why that ping‑pong ball springs back, the steps above will get you a reliable number and a better feel for the physics at play. Happy bouncing!
7. Automating the Workflow (Optional but Powerful)
If you find yourself repeating the same experiment dozens of times—say, testing a new polymer blend or comparing several ball types—consider scripting the entire pipeline. Below is a lightweight, cross‑platform approach using Python, OpenCV, and NumPy.
-
Capture & Store Video
import cv2 cap = cv2.In real terms, videoCapture(0) # 0 = default webcam cap. Practically speaking, set(cv2. Practically speaking, cAP_PROP_FPS, 240) # request high frame‑rate if supported out = cv2. VideoWriter('drop.avi', cv2. while True: ret, frame = cap.Which means write(frame) cv2. read() if not ret: break out.imshow('Live', frame) if cv2. cap.release() out.release() cv2.destroyAllWindows() -
Detect the Ball and Extract Height Data
import numpy as np import cv2 # Load the video cap = cv2.VideoCapture('drop.In practice, avi') heights = [] fps = cap. get(cv2. # Calibration: pixels per meter (measured once with a ruler) ppm = 500.0 # example value; adjust to your setup while True: ret, frame = cap.read() if not ret: break # Convert to HSV and isolate the ball (assume a bright orange ball) hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) mask = cv2.inRange(hsv, (5, 150, 150), (15, 255, 255)) mask = cv2.morphologyEx(mask, cv2.Consider this: mORPH_OPEN, np. ones((5,5),np. # Find contours and pick the largest one contours, _ = cv2.Think about it: contourArea) ((x, y), radius) = cv2. Day to day, cHAIN_APPROX_SIMPLE) if contours: c = max(contours, key=cv2. That's why minEnclosingCircle(c) if radius > 5: # filter noise # y‑coordinate grows downwards; invert to get height above floor height_px = frame. Think about it: rETR_EXTERNAL, cv2. But findContours(mask, cv2. shape[0] - y height_m = height_px / ppm heights. cap.release() -
Detect Peaks (Impact Times) and Compute Velocities
from scipy.signal import find_peaks # Convert height list to a NumPy array for easier slicing h = np.array(heights) # Peaks correspond to the highest point before each bounce. # Use a minimum distance of ~0.2 s (0.Which means 2*fps frames) to avoid picking the same peak twice. peaks, _ = find_peaks(h, distance=0.2*fps, prominence=0. # Times of each peak t_peaks = peaks / fps # Impact times are roughly halfway between successive peaks. # For a more accurate estimate, locate the frame where the height derivative changes sign. impact_times = (t_peaks[:-1] + t_peaks[1:]) / 2 # Velocities just before impact (downward) and just after (upward) v_down = np.diff(h[peaks]) * fps # Δh / Δt ≈ (h_i+1 - h_i) * fps v_up = np.diff(h[peaks][1:]) * fps # same but shifted one bounce forward # Take absolute values because COR uses magnitudes cor_vals = np.abs(v_up) / np.abs(v_down) print("Estimated COR per bounce:", cor_vals) print("Mean COR:", np.mean(cor_vals)) -
Batch‑Run Over Multiple Files
Wrap the above logic in a functionprocess_video(path, ppm, fps_target)and loop over a directory of recordings. Store results in a CSV for later statistical analysis Simple, but easy to overlook..
Why automate?
- Consistency: Human frame‑by‑frame counting inevitably introduces small timing errors; a script applies the same criteria every time.
- Speed: An hour‑long manual analysis becomes a minute‑long batch job.
- Traceability: The code itself becomes part of your lab notebook—anyone can reproduce the numbers from the raw videos.
8. Interpreting the Results Beyond a Single Number
Once you have a set of COR values, ask yourself what they mean for your application The details matter here..
| Observation | Physical Interpretation | Practical Implication |
|---|---|---|
| COR decreases with bounce number | Energy loss is cumulative; material may be heating or micro‑cracking. | |
| COR > 1 (rare, but can appear in measurements) | Measurement error—usually timing or scaling inaccuracies. | |
| COR is higher on a polished steel plate than on wood | Less surface friction and lower internal damping in the plate. Practically speaking, | Tighten experimental controls; perhaps the ball’s surface is uneven. Practically speaking, |
| Large spread (high standard deviation) | Inconsistent drop height, ball spin, or surface imperfections. | Re‑calibrate the ruler, verify frame‑rate, or check for lens distortion. |
And yeah — that's actually more nuanced than it sounds.
Plotting COR versus impact velocity often yields a sigmoidal curve: low speeds give near‑elastic rebounds, mid‑range speeds show a dip due to viscoelastic hysteresis, and very high speeds may plateau as deformation becomes plastic. Recognizing this shape helps you predict performance under real‑world conditions that differ from the lab.
9. Extending the Experiment to Rotational Effects
If the ball spins while it drops, the rebound can be asymmetric. To capture this:
- Add a high‑contrast marker (e.g., a small black dot) on the ball’s surface.
- Track the marker’s angular position frame‑by‑frame using the same OpenCV pipeline, extracting an angle θ(t).
- Compute angular velocity ω = dθ/dt before and after impact.
- Define a rotational coefficient of restitution:
[ \text{COR}{\text{rot}} = \frac{|\omega{\text{after}}|}{|\omega_{\text{before}}|} ]
A significant drop in (\text{COR}_{\text{rot}}) indicates that the impact is converting translational kinetic energy into spin—valuable information for sports like tennis or table tennis where spin dramatically influences ball trajectory.
10. Common Pitfalls and How to Avoid Them
| Pitfall | Symptom | Remedy |
|---|---|---|
| Parallax error – camera not perfectly perpendicular to the motion plane. | ||
| Incorrect scaling – ruler not in the same plane as the ball. | Replace or sand the test surface after a set number of drops; record surface condition. Think about it: | Measured heights appear larger on one side of the frame. |
| Air currents – drafts from HVAC or fans. | ||
| Motion blur – insufficient shutter speed. On the flip side, | Pixel‑to‑meter conversion is off by a few percent. | |
| Surface wear – repeated impacts roughen the plate. | Ball appears smeared; edge detection fails. | Ball drifts sideways, causing inconsistent impact points. On top of that, |
11. A Quick Checklist for the Next Test
- ☐ Verify camera frame‑rate and resolution.
- ☐ Place calibrated ruler in the same plane as the ball.
- ☐ Set ambient temperature and let all components equilibrate.
- ☐ Clean the impact surface; note its roughness (Ra value if possible).
- ☐ Record at least three drops per height.
- ☐ Export video in a lossless format (e.g., .avi with Huffyuv).
- ☐ Run the analysis script; export COR values to a spreadsheet.
- ☐ Plot COR vs. impact speed; look for trends.
- ☐ Document any anomalies (e.g., wobble, spin, surface damage).
- ☐ Store raw videos and processed data in a dated folder for future reference.
Conclusion
Measuring the coefficient of restitution is a deceptively simple experiment that opens a window onto the hidden energy pathways of everyday collisions. By combining a modest camera, a ruler, and a bit of open‑source code, you can move from “the ball looks bouncy” to a quantitative COR value complete with uncertainty bounds and repeatability statistics Easy to understand, harder to ignore. Took long enough..
The real power lies not just in the number itself, but in the story it tells: how material composition, surface finish, temperature, and even spin conspire to either conserve or dissipate kinetic energy. Whether you’re engineering a high‑performance sports ball, designing a robot that must hop across obstacles, or simply satisfying a curiosity about why a rubber duck splashes less than a steel marble, the workflow outlined above equips you with a reliable, reproducible method.
So grab a ball, set up that ruler, hit record, and let physics reveal itself frame by frame. Happy bouncing—and may your COR be ever in your favor.