|
3-Dimensional
Launch Conditions from Impact Conditions:
Going the other way
Dave Tutelman -- June 13, 2020
Introduction
Once in a while, you have to go the other way -- "reverse engineer" the
process -- and deduce
from the launch conditions what the impact conditions must have been.
That is what we are doing on this page.
Since the original page was written, launch monitors have become
widespread. They actually measure the launch conditions of the ball.
But, for golf instruction and for clubfitting, you sometimes would
rather have the impact conditions.
This work was undertaken at the request of Ron Hornbaker in
2020. He
provides value-added software for launch monitors. One of the values he
would like to add is swing data (actually impact data) based on what
the launch monitor measures about the ball's launch. This requires an
impact model which has been reverse-engineered.
In the work that follows, we will refer to steps from page
1 as the source of
formulas we use. For
instance, we might introduce the formula S
= 160 * Vclubhead *
sin(Φ)
with no more justification than "from Step 6". These will have
been derived in detail from the impact-to-launch process, so
you
can refer back to that if you want more depth.
Problem statement and conventions
Given:
- Ball speed Vball
- Vertical and horizontal launch angles LAy
and LAx
- Spin, either as:
- Total spin S
and spin axis tilt σ,
or
- Backspin Sy
and sidespin Sx
- Coefficient of restitution e
- Clubhead and ball masses M
and m
respectively
Compute:
- Clubhead speed Vclubhead
- Spin loft L
(what TrackMan used to call spin loft, the vertical component)
- Angle of attack K
- Face-to-path angle A
- Clubhead path angle P
A few notes about the problem:
- Please bear in mind that this is not a new model of
clubhead-ball
impact, nor is it a test to validate such a model. It is much more
modest than that. In 2007, I came up with the model described on page
1.
There are plenty of other models of impact before and since, and some
are undoubtedly more accurate; but this is the model we concern
ourselves with here. All we do here is to reverse the direction of the
model, solve what the inputs to that model must have been given the
outputs. That is an exercise in algebra and, in the case of two
equations, numerical analysis. Physics is not involved any more (that
was taken care of in the forward model). Not only is physics not
involved, the only involvement of golf is to define reasonable ranges
of the parameters.
- In the work that follows, we will refer to steps from page
1 as the source of
formulas we use. For
instance, we might introduce the formula S
= 160 * Vclubhead *
sin(Φ)
with no more justification than "from Step 6". That means it was
derived in detail in the impact-to-launch process and computed in step
#6, so
you
can refer back to that if you want more depth.
- It
is assumed that impact is center-strike. That is, there is no gear
effect spin, nor loss of smash factor due to strike quality.
- Some of the parameters may need to be estimated from
"typical" values. For instance:
- A driver head typically weighs 200 grams and
has
a coefficient of restitution close to the legal maximum of 0.83.
- A five-iron head may weigh 256 grams with a COR of
about
0.77 or 0.78.
- A golf ball typically weighs within a half gram of the
legal maximum of 46 grams.
These parameters will have some effect on the result. Some testing
shows that over a reasonable range of values the differences, while
detectable, are not large. For the critical values of loft and
face-to-path angle, the difference will seldom exceed one degree.
- Some of the equations involved may not have closed-form
solutions.
For those, we will find numerical solutions, which may be of the form:
- A
readily computable approximation, close enough to give results
comparable to the precision of the instrumentation typically used.
- An
iterative solution, with the intent of rapid convergence to a result
comparable to the precision of the instrumentation typically used.
Straightforward algebra
Let's start with equations we can solve algebraically.
Spin
We will need the total spin S
and its backspin and sidespin components Sy
and Sx.
This is just converting the version you have, polar or rectangular, to
the other so you have both.
If you have S
and σ:
Sy = S cos σ
Sx =
S sin σ
If you have Sx and Sy:
S = sqrt (Sx2
+ Sy2)
Obliqueness
The obliqueness Φ
can be obtained by combining two steps of the original process.
From Step 6, we know that:
S = 160 * Vclubhead
* sin(Φ)
Which we solve for sin(Φ):
| sin(Φ)
= |
s
160 *
Vclubhead |
From Step 4, we know that:
Vball
= Vclubhead
|
1
+ e
1
+ m/M
|
cos(Φ) |
Which we solve for cos(Φ):
| cos(Φ) = |
Vball
Vclubhead |
1
+ m/M
1
+ e |
We can combine the sin(Φ)
and cos(Φ) results to give:
| tan(Φ) |
= |
sin(Φ)
cos(Φ) |
|
|
|
= |
S
160
* Vclubhead |
Vclubhead
Vball |
1 + e
1
+ m/M |
|
= |
S
(1 + e)
160
* Vball (1 + m/M) |
|
So now we have Φ. Notice
how conveniently Vclubhead
canceled out. If it hadn't, we would not have a solution. Remember, Vclubhead
is not one of the givens, but rather a result we may want to find. Now
we have enough information, so let's find it now. We can simply solve
the equation of Step 6 for Vclubhead.
| Vclubhead
= |
S
160
* sin(Φ) |
Note that we could have instead solved the equation of Step 4:
| Vclubhead
= |
Vball
cos(Φ) |
1
+ m/M
1
+ e |
But using the first choice (Step 6) is both simpler and does not depend
on the clubhead parameters M
and e,
which may not be known.
The tough ones
Now let's look at two equations in two unknowns that we have to solve
to get L
(the spin loft) and A
(the angle from face to path).
From the math that led to Step 7:
And, from Step 1:
Since we already know Sx,
Sy,
and Φ, these are two proper equations in A
and L with constants C1 and C2.
We need A
and L
to finish the job. Perhaps there is some way to solve them
algebraically in closed form, but I couldn't find it. I worked on it a
bit, then turned to numerical solutions, which are addressed below.
Finishing off
Before we deal with the nitty-gritty of solving the tough equations
above, let's finish off the work as if we had already solved them for A
and L.
What we are left needing are the angle of attack K
and clubhead path P.
They are determined as follows.
We will use the proportionality factor f
that converts obliqueness to a launch angle. From Step 2, we see it is:
f =
0.96
- 0.0071 Φ
We know the vertical and horizontal launch angles LAy
and LAx
and (we will assume we solved for) the vertical and horizontal
obliqueness
L and A.
From Steps 2 and 3, we see that:
LAy
= f*L + K
LAx = f*A + P
So
it is easy to solve for K
and P.
K =
LAy - f*L
P = LAx - f*A
Numerical
solutions
In this section, we will solve numerically the two equations in two
unknows that we identified earlier.
They look fairly simple, except... Except that they are trigonometry
functions
configured in a way with very few helpful identities. It does not look
like a closed-form solution
will do it. So let's look at numerical solutions. We will start with an
overly simplified approach. It won't work for the range of values we
want, but it will give us an idea how to look for the right solution.
Overly simplified solution
For
small values of x,
it is well known that tan(x)≅x.
The diagram is a graph of tan(x) and x, along with the
percentage error we incur by using x
instead of tan(x).
As we see from the diagram, those values are limited to less
than 20
degrees, and probably only around 10 degrees, before the error gets to
be too large to trust. But that is
enough for drivers. What can we do if we can substitute x for tan(x)? Well, the
first equation would become:
So we now know the ratio between A
and L.
Let's call that ratio r, and we now know we can approximate it as Sx/Sy.
That means that
So we could plug this into the second equation and have only one
equation and one unknown (L)
to solve.
| cos(Φ) =
cos( |
Sx
Sy |
L) cos(L) |
This actually works pretty well for drivers, because the loft is seldom
more than 15°. Let's see if we can find a way to
make this approach work for higher lofted clubs as well.
|
Approximating the first equation
Let's start out by deciding that we aren't interested in a reading if A
(the face-to-path angle) is more than 10°. There are so many things
wrong, or at least very non-standard, with such a swing that accuracy
really isn't an issue. So we can still use A
as an approximation for tan(A),
even if we can't do that with L.
What we want to find is the ratio A/L,
in terms of quantities we know. We will call that ratio r.
What we know is:
Sx
Sy |
= |
tan(A)
tan(L) |
≅
|
A
tan(L) |
What we want to find is:
We can rewrite A/L as
| r
= |
A
L |
= |
A
tan(L) |
tan(L)
L |
We already know that A/tan(L)
is well approximated by Sx/Sy,
so we have
So we are left needing tan(L)/L,
but we don't know L.
However, we do know that L≅Φ
for L>>A.
So let's think about using Φ instead
of L
in the formula for r.
That would give us:
This turns out to work really well.
- We already know Φ.
- As noted, for L considerably larger than A, Φ
is
a good proxy for L.
- But what about for a small L,
something in the same order as A.
Well, A
is small in all interesting cases, less than 10°. And we know that for
small Φ,
tan(Φ)/Φ
is very close to 1. So we are left with the successful approximation we
used for drivers, r=Sx/Sy.
So we have found a good, useful value for r,
one that is within a percent or less of its actual value. We can plug
this r
into the second equation, which becomes:
cos(Φ) =
cos(L) cos(r L)
Let's look at how we can solve this equation.
|
Iterating the second equation
This is simpler than we had before. At least it is just one unknown,
the spin loft L.
Let's look at two numerical solutions to the equation:
- An iterative solution, where we take an initial guess
at L,
evaluate the function, and use the result to give a better value of L.
Repeat (iterate) this process until L
isn't changing any more; that is the solution. We do that in this
section.
- Use a polynomial expansion to approximate cos(L)
and solve the resulting polynomial equation. We will do that in the
next section.
Iterative solutions typically require writing the equation in the form f(x)=0.
For our problem, we have a function in L.
For an iterative solution, it would be written:
f(L)
= cos(L) cos(r L)
- cos(Φ) =
0
The simplest fast iterative solution is Newton-Raphson iteration. The
pattern of iteration is:
| Li+1
= Li - |
f(Li)
df(Li)/dL |
=
Li - |
f(Li)
f
' (Li) |
It requires that we have or can obtain a first derivative for the
function. We can differentiate our function the way we would in any
first-semester course in calculus..
f
' (L) = -r cos(L) sin(r L) - cos(r L) sin
(L)
So our iteration formula becomes:
| Li+1
= Li + |
cos(Li)
cos(r Li)
- cos(Φ)
r
cos(Li) sin(r Li) + cos(r
Li) sin (Li) |
Iterative methods usually rely on a decent initial value for Li.
The the closer the initial value is to the actual L,
the faster the iteration will converge. But we already know that, for
most cases of interest, the A/L
ratio r
is small and therefore Φ
is rather close to L. So let us start
with L0=Φ .
This should promote very fast convergence.
I implemented the convergent procedure on an Excel spreadsheet pretty
easily. With Φ,
the starting value, being so close to L,
the solution, convergence was very fast. For most of my testing, it
only took one step to get to less than a tenth of a degree of the final
value. (In reality, it would take a second step to recognize this fact
by comparing the last two values.)
|
Approximating the second equation as a polynomial
Let's review the problem again. The equation we need to solve is:
cos(Φ) =
cos(L) cos(r L)
Since we know both Φ and r,
this is just an equation in L.
Suppose we expand the cosine function as a power series. The MacLaurin
series for cos(x)
is:
| cos(x) = 1 - |
x2
2! |
+ |
x4
4! |
- |
x6
6! |
+ . . . |
(This is on many available lists of series expansions, and plenty of derivations around. For our purposes here
we'll just accept it as given.)
How many terms of the series will we need to maintain enough accuracy
in our calculations. We will be using lofts up to perhaps 50°, that of
a typical gap wedge. Let's look at how errors build up for the first
two terms and three terms of the series. The graph shows us that the
percentage error of a second-order series is above 1% before the loft
reaches 40°, and is rising rapidly at that point. So we will clearly
want more terms than two. The fourth-order series does a lot better;
the percentage error never gets above 0.1% in our range of interest,
and is small enough to be ignored completely for most of the range.
Let's use the fourth-order series:
| cos(x) ≅ 1 - |
x2
2 |
+ |
x4
24 |
If we plug it into the equation we want to solve, we come up with:
| cos(Φ) =
(1 - |
L2
2 |
+ |
L4
24 |
)
(1 - |
(r L)2
2 |
+ |
(r L)4
24 |
) |
Just looking at this, we can guess it will be pretty difficult.
Multiplying it out leaves us with an eighth-order equation to solve.
(Yes, I know there is a transformation that can make it a
fourth-order equation, but that is still difficult.) But wait! One of
the trig identities that didn't look too appetizing before might help a lot once we decide to use this MacLaurin series expansion.
2 cos(x) cos(y) = cos(x-y) + cos(x+y)
Plugging this into our original equation gives us:
| 2 cos(Φ) | =
cos (L - rL) + cos (L + rL) | | =
cos (L (1 - r)) + cos (L (1 + r)) |
Now we plug the MacLaurin series expansion into this new formulation, and we get:
| 2 cos(Φ) =
(1 - |
L2 (1-r)2
2 |
+ |
L4 (1-r)4
24 |
) +
(1 - |
L2 (1+r)2
2 |
+ |
L4 (1+r)4
24 |
) |
Let's factor this so it looks like the sort of polynomial equation that the handbooks tell us how to solve.
| L4 | (1-r)4 + (1+r)4
24 | - L2 | (1-r)2 + (1+r)2
2 | + 2 (1 - cos(Φ)) = 0 |
This is a fourth-order (quartic) equation in L. But note that there are no odd-order terms in it. That tells us we can use the simple transformation y=L2 and be left with a quadratic equation in y.
| y2 | (1-r)4 + (1+r)4
24 | - y | (1-r)2 + (1+r)2
2 | + 2 (1 - cos(Φ)) = 0 |
We learned in high school how to solve quadratic equations. We take the coefficient of y2 and call it 'a', the coefficient of y and call it 'b', and the rest of the equation is 'c'. The solution for y is simply:
| y = | - b ± sqrt (b2- 4ac)
2a |
In
the case of our golf problem, the negative part of ± is used; it gives
a loft in the range we are looking, 0-50° (roughly 0-1 radians). At
that point, all we need to do is take the square root of y to get loft L.
|
Sensitivity to unknown parameters
Consider this. It is unlikely that someone who has just taken a series
of readings with a launch monitor knows the all data about
the club
required by this model. Nor any impact model, for that matter.
Coefficient of restitution e
and clubhead mass M
do affect launch.
Therefore, it is reasonable, even obvious, that they will affect the
reverse calculations as well. So sometimes -- probably usually
-- the use of the information on this page will
require reasonable guesses about COR (e
in the calculations) and clubhead mass (M
in the calculations). Let's look at how sensitive the impact data is to
e
and M.
I used the forward impact model with a "nominal" club and clubhead
speed, and collected the launch parameters Vball,
LAy,
LAx,
Sy
and Sx.
I used a clubhead speed and attack angle appropriate to the club. Just
to "keep the model honest" (that is, use its 3D capabilities), I also
cranked in a 3° path and -3° face-to-path. I used that for the
nominal-value row, which I consider a reference. The outputs of the
reverse model agree very well with the inputs of the forward model.
Then I cranked some variation into COR and mass (e
and M), and recorded how
it changed the outputs of the reverse model.
The table below records those tests. It should give a feel for
the sensitivity of various
outputs to bad estimates for COR and mass (e
and M). It shows the five
outputs for each of four types of clubs, a gap wedge, a 7-iron, a 20°
hybrid, and a 10.5° driver. For each club, there are five rows of
outputs:
- Nominal
COR and mass. "Nominal" depends on the type of
club. Clubhead mass does not vary much for a given class of club (say,
a 5-iron), seldom more than ±10 grams. Here are the high and low limits
of the range for COR.
- Rigid faces can be as low as 0.77. This might be
typical of a "blade" iron.
- Flex faces are limited by rule to be no more than 0.83.
Most drivers are close to this number.Some irons, and many hybrids and
fairway woods try to reach 0.83, but few get that far.
- Low
COR and nominal mass.
- High
COR and nominal mass.
- Nominal
COR and 10 grams under nominal mass.
- Nominal
COR and 10 grams over nominal
mass.
I have made no attempt to codify or normalize this data. It is here for
the looking, nothing more.
Club
Vhead
K |
Loft |
Ball
Speed |
COR |
Club
head
Mass |
Outputs |
Club
head
Speed |
L |
K |
A |
P |
Gap
Wedge
78mph
-3° |
50° |
77 |
0.78 |
291 |
78 |
50 |
-3 |
-3 |
3 |
| 0.77 |
291 |
78.2 |
49.8 |
-3 |
-3 |
3 |
| 0.83 |
291 |
77.1 |
50.8 |
-3.2 |
-3.1 |
3 |
| 0.78 |
281 |
78.2 |
49.9 |
-3 |
-3 |
3 |
| 0.78 |
301 |
77.9 |
50.1 |
-3 |
-3 |
3 |
7-iron
82mph
-2° |
30° |
108 |
0.78 |
270 |
82 |
30 |
-2 |
-3 |
3 |
| 0.77 |
270 |
82.4 |
29.9 |
-1.9 |
-3 |
3 |
| 0.83 |
270 |
80.4 |
30.7 |
-2.3 |
-3.1 |
3.1 |
| 0.78 |
260 |
82.4 |
29.9 |
-1.9 |
-3 |
3 |
| 0.78 |
280 |
81.7 |
30.1 |
-2 |
-3 |
3 |
20°
Hybrid
89mph
0° |
20° |
125 |
0.80 |
230 |
89 |
20 |
0 |
-3 |
3 |
| 0.77 |
230 |
90.3 |
19.7 |
0.2 |
-3 |
3 |
| 0.83 |
230 |
87.7 |
20.3 |
-0.2 |
-3 |
3.1 |
| 0.80 |
220 |
89.6 |
19.9 |
0.1 |
-3 |
3 |
| 0.80 |
240 |
88.5 |
20.1 |
-0.1 |
-3 |
3.1 |
10.5°
Driver
100mph
+1° |
10..5° |
146 |
0.83 |
200 |
100 |
10.5 |
1 |
-3 |
3 |
| 0.77 |
200 |
103.3 |
10.2 |
1.3 |
-2.9 |
3 |
| 0.83 |
200 |
100 |
10.5 |
1 |
-3 |
3 |
| 0.83 |
190 |
101 |
10.4 |
1.1 |
-3 |
3 |
| 0.83 |
210 |
99.1 |
10.6 |
1 |
-3 |
-3.1 |
In case these errors are more than your application can handle, here
are a few tips for getting a better estimate of e
and M.
- If your launch monitor shows clubhead speed as well as ball
speed, you might be able to tease out of that some info about e
and
M. See my article
on smash factor for the math. Unfortunately, it may not be
possible to tease them apart. Smash factor depends on them both, and
with the same algebraic expression for them that the reverse model uses
in its second step.
- Refer to the catalogs of independent component
manufacturers that try to "clone" the features of brand name clubheads.
They all list the mass of the clubhead they sell, and I would guess it
is usually similar to the brand name they are cloning. But I'm guessing
here; I'm not sure. Here are two online catalogs to start you off: Diamond
Tour Golf and Monark Golf.
- Don't expect much help from the brand name web sites. They
give the specifications for the clubs, not the components. The closest
you will get to finding M
in their specifications is the swingweight -- which isn't really
helpful for this purpose. If you have a friend in the engineering
department of the brand name club you are working with, you might try
asking; but don't hold your breath.
Summary
Let's finish by summarizing the steps involved in the
computation,
stripped of any explanation. (For explanation, go back and read the
body of the page.) We
will use letters instead of numbers to label the steps, to distinguish
this process from the first page.
Given:
- Ball speed Vball
- Vertical and horizontal launch angles LAy
and LAx
- Spin, either as:
- Total spin S
and spin axis tilt σ,
or
- Backspin Sy
and sidespin Sx
- Coefficient of restitution e
- Clubhead and ball masses M
and m
respectively
|
Compute:
- Clubhead speed Vclubhead
- Spin loft L
- Angle of attack K
- Face-to-path angle A
- Clubhead path angle P
|
Before starting, be sure all variables have some non-zero
value. Change zero values to 10-5 or
something else arbitrarily small.
(A) Get total spin and the x and y components of spin.
If you have S
and σ, compute
Sy = S cos σ
Sx =
S sin σ
If you have Sx and Sy, compute
S = sqrt (Sx2
+ Sy2)
(B) Find total obliqueness from
| tan(Φ)
= |
S
(1 + e)
160
* Vball (1 + m/M) |
(C) Find clubhead speed from
| Vclubhead
= |
S
160
* sin(Φ) |
(D) Find the A/L
ratio r
from
(The value of Φ
should
be in radians here.)
(E) Solve for L
by one of two methods:
(E1) Iteration, which will give a numerically exact answer. (E2) A power series approximation, faster but with an [acceptable] error.
(E1) Iteration: Set L
to Φ
initially, then iterate on L.
| Li+1
= Li + |
cos(Li) cos(r Li)
- cos(Φ)
r
cos(Li) sin(Li) + cos(r Li)
sin(Li) |
Until Li
and Li+1
are the same to within the desired tolerance.
(E2) Power series: Find intermediate results, a, b, c, and y.
Now get L from.
L = sqrt (y)
Remember that L is in radians. If you want degrees, you have to convert to degrees.
(F) Get A
from
A = r L
(G) Find launch angle factor from
f =
0.96
- 0.0071 Φ
(The value of Φ
should
be in degrees here.)
(H) Find K
and P
from
K =
LAy - f*L
P = LAx - f*A
That's it. We're done.
Test resultsThis
process (including both versions of Step E) was programmed into an
Excel spreadsheet. I tried a few dozen impact configurations from a 10°
driver to a 60° lob wedge, with face-to-path angles between zero and
8°. I entered into the spreadsheet the launch conditions obtained from
each of those impacts, and checked the output against the original
impact conditions. In every case, the error was below 0.1mph for
clubhead speed and below 0.1 degrees for all angles.
Last
modified June 28, 2020
|