# Introduction Edit

Force-draw curves are essential for understanding the potential of pre-gunpowder mechanical weapons, such as bows, crossbows or ballistas. It's possible to plot the force-draw curve of a ballista even without real-life tests, if we know two things:

- Maximum allowable draw weight
- Relation of bowstring movement to arm rotation (can be generated with a CAD program or with trigonometric calculations)

We also need to assume that rotating the torsion bundles increases energy storage linearly. In practice this would mean that 50 degrees of rotation would store 5 times more energy than 10 degrees of rotation. This method uses simple geometric calculations to plot the actual F/D curve.

Thanks to my good friend Boris Zaprudin for verifying these calculations and also for showing me a mathematical algorithm for calculating the relation of bowstring and arm movement, thus rendering the use of a CAD program unnecessary.

# Plotting bowstring movement Edit

First make simple model of the ballista using a CAD program and measure the bowstring length at rest, then start rotating the arms around the bundle in, say, 10 degree intervals. At each interval, draw a circle starting from the bowstring's nocking point with the same radius as 1/2 of bowstring length. Do the same for the other arm. The center of the bowstring will be located at the intersection of these two circles. Repeat the procedure until you have plotted the entire arm and bowstring movement. Results should look like this.

# Plotting the force-draw curve Edit

Now that we know how much bowstring travel during each phase of arm rotation, we can plot the F/D curve. The underlying idea is visualized in this picture:

Lines **a**, **b** and **c** represent movement of bowstring between 0-10, 10-20 and 20-30 degrees of arm rotation. **A** represents the stored energy, which we have to guess at first. **A(m) + A(n) = A** and **A(o) + A(p) = A**. Lines **x**, **y** and **z** are unknown variables which we have to calculate.

Calculation of **x** is trivial, as it's one side of a triangle:

A = 0,5ax x = A / (0,5a)

Now that we have **x**, we can calculate **y** and all subsequent sections. We start by calculating A(m):

A(m) = 0,5xb

Once that's known, we can calculate **A(n)**:

A(n) = A - A(m)

Finally, we can calculate **y**, as we known that **h(a)** is the same as **b**:

A(n) = 0,5 * y * h(a) A(n) = 0,5 * y * b y = A(n) / (0,5b)

Now we have **y** and we can repeat the same process for each consecutive segment. As these calculations are pretty slow, error-prone and worst of all chained together, it's advisable to feed these into a spreadsheet and let the computer do the hard lifting.

As we had to guess a value for **A** at first, we need to adjust it until we arrive at the maximum draw weight we want. Again, making **A** a variable in a spreadsheet makes this so much easier. The area below the curve, or stored energy, is trivial to calculate, as each segment of the graph has the same area, **A**.

For a practical example of where this algorithm was used, look at the personal torsion weapons page.

Samuli.seppanen 09:29, June 13, 2011 (UTC)