I have written previously about how to make minor adjustments to a Hack Attack pitching machine. That post was mostly about how to maintain velocity and RPM while making symmetric adjustments. That’s a pretty simple task. I showed that the velocity is linear with the sum of all three knobs and RPM is linear with the different between the bottom know and the top two knobs.
Who hasn’t, while using a hack attack, wished that they could dial in another pitch while 1) knowing the resultant shape and 2) not requiring a lot of trial and error? If you are that person, this is for you.
In this post, I will talk about a tool that I have built for which you enter a desired horizontal and vertical break along with velocity and it returns the needed RPM and the settings for the three (shown in Figure 1 as Rb, Rl and Rr).

This requires some assumptions. I assumed that:
- The wheels slip on the ball by a constant amount independent of the other wheels and their RPM.
- The wheel RPM is proportional to the knob position.
- The ball loses 10% of it’s velocity in flight (this could be improved, but I think this is good enough).
Unfortunately, all those linear assumptions require some data. I used a Rapsodo Pro2 to determine the resultant velocity and RPM for several shots using both a Hack Attack and a Hack Attack Jr (which is pictured in Figure 1). We did these two tests on two different days and environments. The setups are shown in Figure 2.


Figure 2: Setup with Hack Attack at Logan High School (left) and Hack Attack Jr at EVO (right).
As noted in my earlier post, the velocity a Hack Attack produces is proportional to the sum of the knobs. Whenever we assume something is linear, that means there is a constant to be determined. We call it k_v in this case:

where v is velocity and the R’s are the knob values. The spin rate produced, in radians/second rather than RPM (we can convert to RPM later) is

where

and k_omega is another constant to be determined with data. What remains is to relate the desired values of break to the ball spin.
This requires a model of the Magnus effect. I tried using the one proposed by Alan Nathan, which is based on lab experiments on spheres, but the RPM values seemed very low to me based on my experience. As an alternative, I fit a 4th order polynomial through the recent baseball data published by the WSU Sports Science Lab (Bin Lyu, Lloyd Smith , Jack Elliott and Jeff Kensrud, “The dependence of baseball lift and drag on spin”, Proc IMechE Part P:J Sports Engineering and Technology 1–7. 2022).


Figure 3: Data from Lyu, Smith, Elliott and Kensrud on lift of baseballs (left) and my curve fit to their data (right).
That paper showed showed interesting differences between the lift on a 4S and 2S orientation, but, since we don’t know the orientation of the balls we are launching, I split the difference.
With this model and some dynamics formulas, we can determine the spin rate needed to achieve a certain value of break.
I tested many settings on both machines. I removed clearly incorrect Rapsodo reads, especially when the ball was far outside the strike zone. By averaging the remaining results, my tests gave me these values for the two constants for the two machines:
Machine


Hack Attack
48.1
1.63
Hack Attack JR
67.1
1.28
I’ve written a MATLAB code to do this computation with some help from Chat. I realize that you are unlikely to be a Matlab user, but it’s a relatively simple matter to get the code into Python. It may be a bit much for Excel. The code sweeps through a range of values of HB, VB and velocity. I will incorporate some example output for the Hack Attack in case you need to confirm your version is working.


The code is linked below:
If you move from VB = 5 to VB = 15″, the ball should arrive 10″ higher. According to this site, turning the vertical crank 1 revolution clockwise should raise the location by 4-6″. As a starting point, I would assume HB works similarly with the other crank.
Note that air density is a required parameter. I used 1 kg/m3 since I live at 4500 ft. If you are near sea level, use 1.2.
If you do convert this to another language, please let me know and I can link it here.
Note that there is no guarantee the ball will go exactly where this predicts. Normal caution with a pitching machine is required. Feedback is welcome.
I want to thank Rapsodo for the Pro2 that made this possible, Logan High School coach Ramirez for the use of his cage, and Jon Roos for the assistance.