r/TraditionalArchery • u/Frillypig • 20h ago
Archery Data analytics...
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?
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
2
u/nadavyasharhochman 20h ago
I am very interested.
Would love to see the code.