As a developer, the first thing that I said when someone claim that there was an app that was able to determine the jump height of a person through a simple video captured from any angle was: "This is impossible, the application must be a scam". However, after some research, testing the application, the documentation and research papers proved me that I was wrong (not as I expected, but still).
The mobile app My Jump 2 gives you advanced information of your jumps using the camera on your smartphone or tablet. Just record a jump, select accurately its take-off and landing, and let My Jump 2 do its magic. My Jump 2 calculates the height, flight time, velocity, force and power of your vertical jumps. Also, it gives you the contact time, vertical stiffness, and reactive strength index (RSI) of your Drop Jumps. Moreover, it allows you to calculate your Force-Velocity profile using Samozino's method.
If you are curious about how this app claims to calculate the jump height through a video recording, check the following explanation.
How does the app calculate the jump height
The video itself doesn't measure the jump height as this approach is practically impossible. You cannot measure anything from a picture or video unless you use something as reference. For example, there are a lot of implementations that use AI to automatically take something from the picture as reference to estimate the height of a person e.g a door:
With videos, the things that can be used as reference are usually more, however, it is still quite unreliable in most of the cases. My Jump 2 claims to do this recording only the feets the user while he/she jumps. So, what does this app use? Apparently, just Math.
How does the app calculate the jump height?
The tools of the app were tested and have scientific foundations (featured on Validity, Reliability, and Usefulness of My Jump 2 App for Measuring Vertical Jump in Primary School Children). In order to calculate the jump height through a formula that I'll explain later, we need to calculate the flight time of the person that is jumping in milliseconds. You can obtain this by subtracting the landing time from the takeoff time in seconds like this:
- takeoff time: the moment in seconds of the video where the user jumps (no foot touch the ground), in this case 2.6347 seconds in the video.
- landing time: the moment in seconds of the video where the user lands on his feets, in this case 3.089033 seconds in the video.
- flight time: substract landing time from takeoff time. So between 2.634763 seconds and 3.089033, there's a flight time of 0.4542 seconds (or 454 milliseconds).
The formula used to calculate the jump height is the following one:
where h stands for the jump height (in meters) and t for flight time (in seconds). In some programming languages, like JavaScript, you could calculate the jump height like this:
// 1. Set the takeoff time in seconds of the video
let takeOffTime = 2.634763;
// 2. Set the landing time in seconds (the moment where at least one foot touches the ground)
let landing = 3.089033;
// 3. Determine the flight time (seconds between the takeoff and landing) and calculate the power of 2 from the result
let flightTime = Math.pow(landing - takeOffTime, 2);
// 4. Determines the jump height using the equation h = t**2 × 1.22625 described by Bosco
// https://pubmed.ncbi.nlm.nih.gov/6681758/
let jumpHeightMeters = flightTime * 1.22625;
// Jump Height in Meters: 0.25305046184362523
// Jump Height in Cms: 25.30
console.log(jumpHeightMeters);
If we use the flight time of an example from the original application (Flight time of 571 milliseconds) and we use the mentioned formula:
// 1. Determine the flight time (seconds between the takeoff and landing) and calculate the power of 2 from the result
let flightTime = Math.pow(0.571, 2);
// 2 Determines the jump height using the equation h = t**2 × 1.22625 described by Bosco
// https://pubmed.ncbi.nlm.nih.gov/6681758/
let jumpHeightMeters = flightTime * 1.22625;
// Jump Height in Meters: 0.39980777624999997
// Jump Height in Cms: 39.9807 (0.3998 * 100)
console.log(jumpHeightMeters);
The result is the same as in the application (without considering any extra load):
Happy coding ❤️!