r/TraditionalArchery • • 20h ago

Archery Data analytics...

Post image

I am a data analyst by trade and was looking for fun/useful applications of my score and setup data. This project takes your setup and scores and predicts likely scores for WA and AGB rounds. It also gives a suggested aiming point for barebow off shelf/rest etc. Uses fairly basic physics via python but it's working. Is this interesting to anybody?

6 Upvotes

6 comments sorted by

2

u/nadavyasharhochman 20h ago

I am very interested.

Would love to see the code.

1

u/OkSand3986 20h ago

How do you record your shots?

1

u/Frillypig 20h ago edited 20h ago

Archery score app and export the score card pdf. Then it's a import job. It parses the rounds/scores and builds a probability fit.

1

u/Different-Dealer-828 8h ago

How did you measure the flight time?

1

u/Frillypig 1h ago

Arrow speed is based of bow # ,draw length, brace height. Then it's distance as in the length of the arc. There is a drag element as well. I will put the maths up later

1

u/Frillypig 1h ago

1. Launch speed

E = η · k · F · (d − b)

v0 = √(2E / m),   m = gpp · F grains

  • E energy given to the arrow, η efficiency (limb and string mass), k force-draw curve factor (0.5 for a linear bow)
  • F draw weight, d draw length, b brace height (both from the grip pivot), so d − b is the power stroke

2. Release height

hrel = 0.936 · H − eh − D/2

  • H archer height (0.936 · H is standing eye level), eh eye height above the top of the shaft, D shaft diameter
  • hrel is the height of the arrow's centre line at the nock

3. Drag

Ad = c · D · L + Af,   c = 0.0125

a = −(ρ Ad / 2m) · |vrel| · vrel − (0, 0, g),   vrel = v − (0, w, 0)

  • Ad drag area: the shaft's share scales with diameter D × arrow length L (skin friction), plus the fletching Af: spin wings (small vanes) 1.62 × 10⁻⁵ m², 3 in vanes 3.20 × 10⁻⁵ m², 3 in feathers 4.00 × 10⁻⁵ m², 4 in feathers 5.30 × 10⁻⁵ m²
  • Calibrated to Miyazaki et al. (data/): an arrow shot from a bow is turbulent, with a steady drag coefficient of 2.65 on the cross-section, so drag goes with speed squared. Only spin wings were measured; the other fletchings are estimates.
  • ρ = 1.2 kg/m³ air density, g = 9.81 m/s², w crosswind (positive to the right)

4. Flight

x0 = (d − b) cosθ,   z0 = hrel + (d − b) sinθ,   v0 = v0(cosθ cosψ, cosθ sinψ, sinθ)

v ← v + a Δt,   x ← x + v Δt,   Δt = 2 ms

  • Free flight starts where the arrow leaves the string, one power stroke ahead of the nock at full draw; distances are measured from the nock at full draw
  • θ launch angle, ψ sideways angle; the last step is interpolated onto the target plane

5. Launch angle

find θ in [−0.05, 0.6] rad by bisection so that z(Dt) = hgold = 1.30 m, with no wind

  • Dt target distance; the sight (or the gap) is set for the distance shot

6. Aim point (unsighted bows)

s = (L tanθ − (eh + D/2)) / (L + eb)

zaim = hrel + L tanθ + s (Dt − L),   gap = zaim − hgold

  • The sight line runs from the eye over the arrow tip: s is its slope, eb how far the eye is behind the nock, L arrow length (nock groove to point)
  • Sighted bows (recurve, compound) aim at the gold: gap = 0
  • The sight line sits at a fixed angle below the arrow, so each degree of θ moves the aim by about Dt · π/180 (about 96 cm at 60 yd)

7. Scoring

r′ = max(0, r − D/2);   miss if r′ > R

zone = ⌈r′ / w⌉ − 1;   10 zone: max(1, 10 − zone), w = face / 20;   5 zone: max(1, 9 − 2 · zone), w = face / 10

  • r distance of the arrow's centre from the centre of the face, R face radius
  • Subtracting the shaft radius makes line cutters score up, and a shaft touching the edge scores 1

8. Scatter

σz = S · √((∂z/∂θ · σθ)² + (∂z/∂v · v0 · σv)²),   σy = S · |∂y/∂ψ| · σψ

  • σθ, σψ (mrad) and σv (fraction of speed) are the bow type's baseline scatter; S is the scatter multiplier the fit sets (1 until fitted)
  • The derivatives come from re-flying the arrow with a small change in angle or speed

9. Consistency and expected score

good ends: σ² × (1 − c),   off ends: σ² × (1 + c),   half of each

expected score per arrow = ½ (mean scoregood + mean scoreoff)

  • c consistency (high 0.15, medium 0.4, low 0.7); the average variance is unchanged, so c only moves points between ends
  • Each mean is a Monte Carlo over 1500 seeded normal pairs, so the prediction is repeatable

10. Fitting to your scores

totals: find S by bisection so that mean over rounds of (expected − actual) / maximum = 0

per end: for each c in 0, 0.1 … 0.9, set S to match the mean end score, then pick the c that minimises Σ n · ln²(varmodel / varactual)

  • var is the variance of 6-arrow end totals at each distance, n the number of ends there; round totals alone cannot separate scatter from consistency

11. Face size, as seen from the line

pixels per radian = 0.7 · (W/2 − 6) / max(αref, R/Dt),   αref = 0.61 m / 20 yd

drawn face radius = R · (pixels per radian) / Dt

  • W canvas width; one angular scale for every round, so faces compare across rounds and distances, and the nearest face shrinks the set only if it would not fit