This is a sinker/changeup edition because it is focused on vertical movement. I may tackle horizontal movement later.
Say you are an ambitious pitcher looking to get ahead and have drank our Seam Shifted Wake Koolaid (it’s good!) Did the pitch work? How can you know?
Note that, on their own, Trackman, Rapsodo, or a “Smart Ball” cannot tell you if you achieved this effect for various reasons that I won’t go into here. But, if you own or have access to one of these plus a camera, I think you can figure it out.
The idea is to take note of a few pieces of information:
The normal pitch metrics (RPM, Tilt, Velocity, gyro degree)
The pitch location by an independent camera
What we need is a camera that is level and near the release height. I’ve used a matchup that probably never happened, Steve Cishek (who has a release height of about 4′) vs Kris Medlan (a pitcher, I know, but who I once heard say he was excited to play the first game of spring training where pitchers bat, not because he got to bat, but because he got to hit!), who is 5’10”. If the setup is right, you should see Steve’s hand near the center of the camera at release and Kris’s letters in the center of the camera. The distance from the camera to the rubber needs to be known (y_cam), and you will need an estimate of your release point.
You may think that frame rate is really important. While it is helpful for finding the seam orientation, the trajectory can be found pretty well with the frame rate of an iPhone.
To get the camera level, I recommend placing it near the release height, measuring how high that is, then put a something of the same height at home plate. The top of that object should be exactly at the center of the field of view when the camera is level. This is critical. In some cases, the ground between the rubber and the plate may be sloped. This will cause a level camera (as measured by a level) to be pointed at the wrong position.
Make sure to turn off any autofocus or auto-aperture feature. I find that this causes the field of view to change near the release and causes errors.
Below is the setup that Connor Hinchliffe (Phillies org) is using. He is working on a SSW “Discoball” changeup. We want the camera at his release height, level, and looking at home plate. He is still working on this setup and you can see his release is just above the center of the camera (cam needs to move up a little) and the batter (whose shoulders are near release height) lets us know that the camera is nearly level.
Here’s the full video. From this, plus information provided from a Rapsodo or smart ball (like the DK ball shown here), I hope that we can determine where a model based on gravity and the Magnus effect would predict the ball go and how much different it ended up than the prediction. In that circumstance, we likely have SSW going on.
In order to compare to a pitch simulator, we need the vertical angle of the release and the release height. In order to get the angle, we need the x, y, z trajectory of the ball. To do this, I’ve written a MATLAB script to analyze the video. I’d be happy to analyze yours if you send it and will soon provide the script.
First, we need to find the ball speed as a function of time. I will assume a constant drag coefficient of Cd =0.33 and modify the velocity at each frame accordingly.
Force is mass times acceleration, so
so the y position at frame i is
Where dt is 1/frame rate. In what follows, I am speaking only of vertical. Since our camera is looking straight down the middle, the center of the picture at release is equivalent to the center of the picture at the plate. However, any other position can be mapped to the plate position by a simple relationship.
Let’s call the center of the ball at any moment j, in pixels. The top of the image is j = 1 and the index increases toward the bottom of the image. If the camera is set up correctly, this is also the release height, which is 5.5′ for Connor. We need a length scale at the plate, and the batter dummy works great. The dummy is 5’10.5″ from the ground to the top of his cap. If I count how many vertical pixels and call it Nz, our calibration coefficient is
C =10.875/Nz [feet/pixel].
So, we can convert pixels to physical space when the ball is at the plate. Anywhere between release and the plate, this must be corrected for parallax. Given this camera setup, looking straight at home plate, we can easily determine the ball height at any instant. We subtract this value from the release height z0.
z = z0 – ( y+ y_cam)/(60.5+y_cam) * C * j [feet]
Again, j is the pixel index of the ball. My script finds the ball using the cross correlation xcorr2. The image is correlated with a 100 pixel white circle that shrinks with y since the image of the ball also gets smaller as the ball moves away. If the camera is not level, we can correct this based on the height of a the pixel at 5’5″ high. I’ll skip that here and just suggest you get the camera level.
Now back to the original question, which is the vertical release angle? After a few frames from release, we could compute the distance the ball has moved toward the plate (Ly) and vertically (Lz). From trig, we know that
Ï´ = arctan(Lz / Ly)*180 / 3.14 [degrees]
How many frames? More frames will smooth out errors in finding the center of the ball, but eventually the ball will no longer follow a linear path.
Now, the idea is to use a pitch trajectory simulator, such as Alan Nathan’s (Excel or FORTRAN) or UMBA by Andrew Smith (Python) to simulate the pitch. Either of these will require:
Release distance from rubber
and will spit out the pitch height.
If you have a pitch that looks like it should be seam shifted (e.g. it rotates in such a way to have seams near the top of the ball a lot of the time) and UMBA predicts a higher pitch than you got, well, there it is.