#### What is Topgolf

Topgolf is a place where you can drink and hit golfballs at giant targets. It looks like this:

I was there last week with coworkers and one asked how often I thought balls collided mid-air, so I tried simulating it.

*Note that what follows is much cruder and less well-defined that what I normally post here...this is just a fun thing to try to get some idea of the likelihood*.

#### Simulating a golf ball's flight path

There are many variables to consider here. I played with a lot of ideas and found a simple model that looked pretty good. Since exact details don't matter here, I went with it.

The basic model is that golf balls at Topgolf will typically be hit at ~50 m/s forward and 10 m/s upward (total speed of 51 m/s). For reference, a professional golfer's drive is typically 50% faster than this. They will have a decent amount of spread in initial velocity in each direction and that spread will follow a normal distribution. There will be some air resistance, and the ball will have an acceleration of -9.8 m/s^2 in the vertical direction. An example simulation of 25 balls from golfers standing 2 meters apart is below. All distances are in meters and this is the view from the side (you can see height and distance of the balls):

This is the same thing viewed from above:

This is the same thing viewed from above:

#### Defining a collision

A golf ball has a 4-5 cm diameter. I am thus defining a collision as a situation where two paths come within 5 cm of each other. Since these are extremely rare, I also tracked 1.25 m, 1 m, 0.5 m, 0.25 m, and 0.1 m near-misses.

#### Simulating collisions with golfers close together hitting at the same time

This is the completely ideal situation at Topgolf. 5 golfers per level spaced ~2 m apart on 3 levels and all hitting the ball at the exact same time. This is not realistic, but should provide a good upper bound on collision frequency. The results I get simulating this 5,000 times are:

There were actually two collisions. 15 golfers hitting at the exact same time in the ideal arrangement 5,000 straight times led to two collisions, so it's incredibly rare but technically possible.

#### Simulating collisions with a typical Topgolf scenario

I have no idea what the actual, typical Topgolf situation is, so I'm making wild guesses. My first guess here is that in a given ~10 second interval, 10 golfers at various locations will hit the ball when Topgolf is at its busiest. I let these locations spread ~50 meters horizontally and still used 3 vertical levels. I would expect collisions to be insanely rare here. The results for 5,000 runs are below:

As expected, collisions are rare here and are nothing like the ideal scenario. Making it more ideal, here it is assuming you have 15 golfers spread out and hitting either simultaneously, over a 1 second period, or over a 3 second period:

As expected, collisions are rare here and are nothing like the ideal scenario. Making it more ideal, here it is assuming you have 15 golfers spread out and hitting either simultaneously, over a 1 second period, or over a 3 second period:

#### Summary

To summarize, I'll try to wildly extrapolate from these simulations. The plots above fit sort of well with a power fit of 'collisions = C1*(collision distance)^C2' where 'collision distance' is the distance between balls defined as a collision, and 'collisions' is the number of balls that will come within that collision distance of each other. C1 and C2 are determined by the parameters here (spacing of golfers + # of golfers in a given time interval). Since I have no idea exactly how many people are hitting in a given window at Topgolf, I'll somewhat arbitrarily pick '15 balls hit every 3 seconds from arbitrary locations' as the best possible case to use, and '10 balls hit every 10 seconds from arbitrary locations' as the typical case when they are busy.

The equation I get for the 15 golfer/3 second one is '# of collisions = 327*(collision distance)^(2.5)'. Plugging in 0.05 m as the distance for when two balls actually hit, that yields 0.018. That's once every 5.4 iterations. Remembering that the equation was derived from 5,000 simulations, that means that if you maintained 15 people hitting every 3 seconds at Topgolf, you'd expect balls to collide in mid-air maybe once every 25,000 (5.4*5000) periods, or 75,000 seconds. Assuming a given Topgolf location maintains this intensity for 1 hour per day, since an hour is 3600 seconds, that's once every month or so.

To test this, I went ahead and ran this scenario 10 times. You would expect 1 or 2 collisions based on the above '1 collision per 5.4 iterations' result, and it actually yielded one. Here are the results scaled for 5,000 iterations to match the others:

For more realism, I did the same with 10 golfers spread over 10 seconds. I get 52*(collision distance)^(2.5). Doing the same math, that yields one collision every 34 iterations. Doing the same conversion, that would mean that if this were the peak traffic at Topgolf and it lasted an hour per day, you'd get a collision about once every 15 months or so.

I played with a lot of ideas in this and did not organize the code very well, and the state is also not documented. However, here is the code if you want to get an idea of how this worked.

The equation I get for the 15 golfer/3 second one is '# of collisions = 327*(collision distance)^(2.5)'. Plugging in 0.05 m as the distance for when two balls actually hit, that yields 0.018. That's once every 5.4 iterations. Remembering that the equation was derived from 5,000 simulations, that means that if you maintained 15 people hitting every 3 seconds at Topgolf, you'd expect balls to collide in mid-air maybe once every 25,000 (5.4*5000) periods, or 75,000 seconds. Assuming a given Topgolf location maintains this intensity for 1 hour per day, since an hour is 3600 seconds, that's once every month or so.

To test this, I went ahead and ran this scenario 10 times. You would expect 1 or 2 collisions based on the above '1 collision per 5.4 iterations' result, and it actually yielded one. Here are the results scaled for 5,000 iterations to match the others:

For more realism, I did the same with 10 golfers spread over 10 seconds. I get 52*(collision distance)^(2.5). Doing the same math, that yields one collision every 34 iterations. Doing the same conversion, that would mean that if this were the peak traffic at Topgolf and it lasted an hour per day, you'd get a collision about once every 15 months or so.

I played with a lot of ideas in this and did not organize the code very well, and the state is also not documented. However, here is the code if you want to get an idea of how this worked.

## 0 comments:

## Post a Comment