# Angles and Archery

I've always been curious to compare archers in various disciplines, and to see how accurate they really are.  However, the problem is that they'll never go head-to-head, as each one is trained to work at different distances.  Also, one has to be careful, as outdoor archers must battle wind, something that is not an issue indoors....

However, one can attempt to model archers with statistics, and compare them directly.  The key to attempting this (for what it's worth) is to take their score and details of target distance and determine how accurate they are, in terms of the angle that they shoot.  Then, one can presumably directly compare the angles, across disciplines.

The model that we consider here is simple:  Your shooting skill results in groups a certain number of mrad (milliradians, a type of angle) wide.  Once you know how many mrad you're shooting, you can predict your score on various targets.  Conversely, you can convert the scores of top shooters to mrad and compare them to you, or each other:  We can even compare two shooters who have not fired upon a common target, and I show that compound shooters are not really more accurate than recurve shooters, for example.  It's also easy to predict the "line cutting" benefits imparted by "fat" arrows (if an arrow falls into two scoring rings, the higher score is awarded, and not the lower), and this is of interest to many target archers.

Now, one must not forget that outdoors there are pertubations in the shot induced by wind, and we cannot separate them from the errors induced by the shooter.  The major problem with this model is that it assumes that there is no gusting of wind that deflects long-range arrows; of course this assumption is false under most practical circumstances!  However, one might guess that the wind was well behaved on days when the world records were set, so this oversight might not be as serious as it looks at first thought.

As always, I hope that I have not made a mistake, so if you find one, please be so kind as to write to me!  :)

## Theory

Everybody knows about measuring angles in degrees (where 360 degrees make a circle), but there is a smarter and more useful unit to measure angle, the radian.

To measure the angular width of an object in radians (i.e., how wide it looks to you, the observer), you merely divide its width by its distance from you (we make a simplifying assumption that the target width is small compared to its distance from the observer so we can avoid using trigonometry, but this is the case in any target shooting sport).

So, if we're looking at a target that is 1.22m wide, and it is 84m away, it is 1.22/84 = 0.0145rad = 14.5mrad wide from your perspective as the viewer.  (A mrad is a "milliradian," or a thousandth of a radian.)  At their correct distances, the standard 20 yard indoor target is 22.2mrad (40cm/18m), and the standard 70m outdoor target is 17.4mrad (1.22m/70m).

If you must, now might be a good time to switch to the Applications section....

We will start by assuming that arrows fall upon the target according to a standard normal distribution, as follows:

``P[x_,s_]:=Exp[-(x/s)^2/2] / Sqrt[2 Pi] / s``
``P[x_]:=P[x,1]``
``Plot[P[x],{x,-3,3}];``

It is in no way clear that real arrows land on the target with such a distribution...  it would be interesting to get some targets from some top archers (who practice with many hundreds of arrows per day) and study the details of their distributions, but I haven't done this important work.

Let us assume that the x and y position (horizontal and vertical distribution) of the arrow are both according to the same distribution:

``P[x]P[y]``

This is suggesting that we replace x^2+y^2 with r^2, so we can get a radial probability:

``Pr[r_,s_]:=Exp[-(r/s)^2/2]/(2 Pi)/s^2``

The "cumulative probability" (that it is between a radius 0 and s) is given by this closed form expression:

``SetAttributes[f,Listable]``
``f[a_,s_]=Simplify[Integrate[Pr[r,s] 2 Pi r,{r,0,a}]]``
``Plot[f[r,1],{r,0,3}];``

Let's check the normalization to see that it's reasonable:

``````With[{a=Infinity},Integrate[P[x,s]
P[y,s],{x,-a,a},{y,-a,a}]]``````
``With[{a=Infinity},Integrate[Pr[Sqrt[x^2+y^2],s],{x,-a,a},{y,-a,a}]]``

Our expected score for an arrow should be determined as follows, where we get the width of the target (mrad), the sigma of the shooter (mrad), and the radius of the arrow (mrad):

``scorevector={10,10,9,8,7,6,5,4,3,2,1,0};``
``pvector[w_,s_,r_]:=With[{x=f[Append[Prepend[Range[10],1/2],Infinity]w/20+r,s]},                         x-Prepend[Drop[x,-1],0]]``
``SetAttributes[score,Listable]``

The three arguments are, the width of the target (radians), how good the shooter is (radians), and the width of the arrow (radians):

``score[w_,s_,r_]=Simplify[pvector[w,s,r].scorevector]``

18m shooters are crazy about their X count, so it's important to be able to determine it:

``scorex[w_,s_,r_]=Simplify[pvector[w,s,r].{1,0,0,0,0,0,0,0,0,0,0,0}]``
```

```
```

```

Here are a few utility functions that we use to plot:

``myplot[f_,range_]:=Plot[f,range,                        Frame->True,                        GridLines->Automatic,                        RotateLabel->False,                        DisplayFunction->Identity]``
``myshow[g_,title_]:=Show[g,                        DisplayFunction->\$DisplayFunction,                        FrameLabel->{"mrad","score",title,""}]``

## Applications

Over here we use the theory to look at several interesting archery situations.

### Let's Go to Vegas for 18m Spot Shooting

This entails shooting 30 arrows at 18m, indoors, where the arrows are very fat.... Here I draw five lines, for a non-physical 0mm arrow, and then a 5mm arrow (for the Easton X10, the most important outdoor arrow), a 7mm arrow, and a 10mm arrow. You can see that the fat arrows certainly pick up points, they are very thick compared to the ring width. However, as the archers gets really good, they pick up less points, because the shot is already a ten.

The top 18m spot shooters are clearly shooting at around 0.5mrad, or less, which is a remarkable feat, but they are not really more accurate than top recurve shooters, as you will see, shortly.

``vplot[from_,to_]:=myshow[myplot[30 score[0.40/18,s/1000,#1/2/18],                         {s, from, to}]&                         /@({0,5,8,10}/1000),                         "18m Vegas scores (0, 5, 8 & 10mm arrows)"]``
``vplotx[from_,to_]:=myshow[myplot[30 scorex[0.40/18,s/1000,#1/2/18],                          {s, from, to}]&                          /@({0,5,8,10}/1000),                          "18m Vegas X count (0, 5, 8 & 10mm arrows)"]``

When you look at these plots, the top line is for 10mm arrows, the next line is for 8mm arrows, the next line is for 5mm arrows, and the bottom line is for 0mm arrows, what would happen if one was firing needles with no line-cutting abilities.

Let's look at the plot with some enlargement to see the benefits of "logs," the fat arrows that people use in Vegas to boost their score.  As you can see, going from a 8mm (second-to-top curve) to 10mm (top curve) arrow at a given vertical mrad line can sometimes pick up a point!

``{vplot@@#,vplotx@@#}&/@{{0.1,3},{0.2,1},{1,2},{2,3}};``

``vplot3d[from_,to_]:=Plot3D[With[{w=0.40/18,                    ns=s/1000,                    ne=e/1000/2/18},                    30(score[w,ns,ne]-score[w,ns,0.005/2/18])],                    {e,5,10},                    {s,from,to},                    AxesLabel->{"diameter (mm)","mrad","extra score"}]``

These are the points gained going from 5mm up to whatever size you want below 1cm.  (You can actually use this plot to go from any two sizes between the above ranges, but if you don't know how to do that, send me email, and I'll help.)

``vplot3d@@#&/@{{0.1,3},{0.1,2},{0.1,1}};``

I think it is fair to say that one might as well shoot fat arrows indoors, as a few points can actually be a really big deal, assuming that one can tune those fat arrows.

### Predicting FITA Scores

Men shoot at 30m, 50m, 70m and 90m.  Women shoot at 30m, 50m, 60m, 70m.  We can therefore compare their scores as follows:

To predict a FITA score,

``x10arrow = 0.0055;``
``allscores[s_]:= With[{w={0.40, 0.80, 0.80, 1.22, 1.22, 1.22},                      d={18,   30,   50,   60,   70,   90}},                     score[w/d,s,x10arrow/2/d]]``
``scoremfita[s_]:=36 allscores[s] . {0, 1, 1, 0, 1, 1}``
``scorewfita[s_]:=36 allscores[s] . {0, 1, 1, 1, 1, 0}``

### Men's FITA Scores

``myshow[myplot[scoremfita[s/1000],{s,0.01,2.5}],"Male FITA"];``

### Women's FITA Scores

``myshow[myplot[scorewfita[s/1000],{s,0.1,3}],"Female FITA"];``

### Example:  Park, Sung Hyun

Let's look at one interesting example, Park, Sung Hyun, who shot a world record with a 1405!  (It is astonishing, and well worth looking at.)  She was shooting X10 arrows, with a diameter of about 5mm.

``findfmrad[n_]:=FindRoot[n == scorewfita[s/1000],{s,0.1,5}][[1,2]]``
``findfmrad[1405]``

So her overall shot was 0.6mrad.  Let's see how she did at the various distances.  The assumption behind this model is that she'll get roughly the same width in mrad.

Broken down, 351@70m, 351@60m, 346@50m, 357@30m.

``SetAttributes[workd,Listable]``
``workd[v_,w_,r_]:=FindRoot[v==36 score[w/r,s/1000,x10arrow/2/r],{s,0.3,1}]``
``workd[{351, 351, 346, 357}, {1.22, 1.22, 0.8, 0.8},{70, 60, 50, 30}]``

### Example: Clint Freedman

347@90m (with a compound bow).

``workd[347,1.22,90]``

### Female Scoring Advantage

``myshow[myplot[scorewfita[s/1000]-scoremfita[s/1000],       {s,0.1,3}],       "Female Scoring Advantage"];``

For world-class shooters, the women will get an extra 10 to 20 points above the men because they get to shoot 60m instead of 90m.  (Again, we discount wind effects, etc., which actually punish the men much more.)  However, for lesser shooters (higher mrad), the women will get a significant score boost.

### Scoring at Distance

In FITA shooting we're interested in 36 arrows, with a score of 360.  There are shot at 30m, 50m, 60m, 70m, and 90m, depending on sex (above).  I also threw in 18m....

``````vplot[from_,to_]:=myshow[myplot[36
score[0.40/18,s/1000,#1/2/18],                         {s,
from,
to}]&                         /@({0,5,8,10}/1000),                         "18m
Vegas scores (0, 5, 8 & 10mm arrows)"]``````
``sp[i_,text_]:=myshow[myplot[36 allscores[s/1000][[i]],{s,0.01,2.5}],text];``
``(sp@@#)&/@{{1,"18m"},{2,"30m"},{3,"50m"},{4,"60m"},{5,"70m"},{6,"90m"}};``

While this is a very simple computation, and I'm pretty sure that I didn't make a mistake (FAMOUS LAST WORDS), be careful... should you notice a mistake, please be so kind as to inform me, so that I might fix it.

Kleanthes Koniaris, email.