Skip to main content

ballistics-engine

High-performance ballistics trajectory engine with professional physics modeling.

Features

  • Professional-grade trajectory calculations with multiple drag models (G1, G7, G8)
  • Advanced physics including wind effects and atmospheric modeling
  • Fast Rust implementation with Python bindings via PyO3
  • Imperial units API (grains, fps, yards, inches) with automatic metric conversion

Installation

pip install ballistics-engine

Quick Start

from ballistics_engine import BallisticInputs, TrajectorySolver, WindConditions, AtmosphericConditions, DragModel

# Create ballistic inputs (all imperial units)
inputs = BallisticInputs(
    bc=0.505,                        # G7 BC
    bullet_weight_grains=168,        # grains
    muzzle_velocity_fps=2650,        # feet per second
    bullet_diameter_inches=0.308,    # inches
    bullet_length_inches=1.24,       # inches
    sight_height_inches=1.5,         # inches above bore
    zero_distance_yards=100,         # yards
    twist_rate_inches=11.25,         # inches per turn
)
inputs.drag_model = DragModel.g7()  # Use G7 drag model

# Create wind conditions (optional)
wind = WindConditions(
    speed_mph=10,                    # mph
    direction_degrees=90,            # degrees (0=headwind, 90=from right)
)

# Create atmospheric conditions (optional)
atmosphere = AtmosphericConditions(
    temperature_f=59,                # Fahrenheit
    pressure_inhg=29.92,             # inHg
    humidity_percent=50,             # percent
    altitude_feet=0,                 # feet
)

# Solve trajectory
solver = TrajectorySolver(inputs, wind=wind, atmosphere=atmosphere)
result = solver.solve()

# Print results
print(f"Max range: {result.max_range_yards:.1f} yards")
print(f"Time of flight: {result.time_of_flight:.2f} seconds")
print(f"Impact velocity: {result.impact_velocity_fps:.1f} fps")
print(f"Impact energy: {result.impact_energy_ftlbs:.1f} ft-lbs")

# Iterate through trajectory points
for point in result.points:
    print(f"Time: {point.time:.2f}s, X: {point.x:.1f}yd, Y: {point.y:.3f}yd, V: {point.velocity_fps:.1f}fps")

Units

The Python API uses imperial units for convenience:

  • Mass: grains (gr)
  • Velocity: feet per second (fps)
  • Distance: yards (yd) and inches (in)
  • Pressure: inches of mercury (inHg)
  • Temperature: Fahrenheit (°F)
  • Wind speed: miles per hour (mph)

All conversions to metric (used internally by the Rust engine) are handled automatically.

API Reference

BallisticInputs

Main input parameters for trajectory calculation.

Parameters:

  • bc (float): Ballistic coefficient
  • bullet_weight_grains (float): Bullet mass in grains
  • muzzle_velocity_fps (float): Muzzle velocity in fps
  • bullet_diameter_inches (float): Bullet diameter in inches
  • bullet_length_inches (float): Bullet length in inches
  • sight_height_inches (float): Sight height above bore in inches
  • zero_distance_yards (float): Zero distance in yards
  • shooting_angle_degrees (float): Uphill/downhill angle in degrees
  • twist_rate_inches (float): Barrel twist rate (inches per turn)
  • is_right_twist (bool): True for right-hand twist (default: True)

WindConditions

Wind parameters.

Parameters:

  • speed_mph (float): Wind speed in mph (default: 0)
  • direction_degrees (float): Wind direction in degrees (0=headwind, 90=from right, default: 0)

AtmosphericConditions

Atmospheric parameters.

Parameters:

  • temperature_f (float): Temperature in Fahrenheit (default: 59)
  • pressure_inhg (float): Barometric pressure in inHg (default: 29.92)
  • humidity_percent (float): Relative humidity percentage (default: 50)
  • altitude_feet (float): Altitude in feet (default: 0)

TrajectorySolver

Trajectory calculation engine.

Methods:

  • __init__(inputs, wind=None, atmosphere=None): Create solver with inputs
  • solve(): Calculate trajectory, returns TrajectoryResult

TrajectoryResult

Trajectory calculation results.

Properties:

  • max_range_yards (float): Maximum range in yards
  • max_height_yards (float): Maximum height in yards
  • time_of_flight (float): Total flight time in seconds
  • impact_velocity_fps (float): Impact velocity in fps
  • impact_energy_ftlbs (float): Impact energy in ft-lbs
  • points (list[TrajectoryPoint]): List of trajectory points

TrajectoryPoint

Individual point along trajectory.

Properties:

  • time (float): Time in seconds
  • x (float): Downrange distance in yards
  • y (float): Vertical position in yards (relative to line of sight)
  • z (float): Lateral position in yards
  • velocity_fps (float): Velocity in fps
  • energy_ftlbs (float): Kinetic energy in ft-lbs

DragModel

Drag model selection.

Static methods:

  • DragModel.g1(): G1 drag model (flat base)
  • DragModel.g7(): G7 drag model (boat tail)
  • DragModel.g8(): G8 drag model (boat tail with meplat)

License

Dual licensed under MIT or Apache-2.0.

Links

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ballistics_engine-0.27.1.tar.gz (50.4 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

ballistics_engine-0.27.1-cp38-abi3-win_amd64.whl (574.1 kB view details)

Uploaded CPython 3.8+Windows x86-64

ballistics_engine-0.27.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (667.1 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ x86-64

ballistics_engine-0.27.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (646.8 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

ballistics_engine-0.27.1-cp38-abi3-macosx_11_0_arm64.whl (612.4 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

ballistics_engine-0.27.1-cp38-abi3-macosx_10_12_x86_64.whl (639.6 kB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

Details for the file ballistics_engine-0.27.1.tar.gz.

File metadata

  • Download URL: ballistics_engine-0.27.1.tar.gz
  • Upload date:
  • Size: 50.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for ballistics_engine-0.27.1.tar.gz
Algorithm Hash digest
SHA256 03e022c1092b5f5205f8ec23c69dfc36d69fa334d4cfda4d97f68db0506d2749
MD5 47c55f2992e2ebb8f52cd10d8837475b
BLAKE2b-256 c3ba53c80ce8f76bcb2ca796dc0c819f8194941f17a8819dbdb1a17ba391ac9b

See more details on using hashes here.

File details

Details for the file ballistics_engine-0.27.1-cp38-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for ballistics_engine-0.27.1-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 5387108fff446ecedc95486eca5206edeeada47a824c69886c5e84062992dc76
MD5 b91593c9c81bfcb3bde5d7483d1ade6b
BLAKE2b-256 d30ab74238cc111fdcb74c4d532bb8c3602870b14ed4664688a167424a27644d

See more details on using hashes here.

File details

Details for the file ballistics_engine-0.27.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ballistics_engine-0.27.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c539763be67fb9e595a3e7f61af2abd999da33f2338a23c75a6faeb8b6c64b9e
MD5 7c97fc7a2f82076191bb678d8c3a3627
BLAKE2b-256 6b8d36494b0210221dabf88fde52331a089e39f4e6004d4ba9ac07dc5e188967

See more details on using hashes here.

File details

Details for the file ballistics_engine-0.27.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ballistics_engine-0.27.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bd346b97c72c9571b3deed3a72649be6283bc85e889656fb09eb1cdb9508356b
MD5 b5bb604a12ae9b749448146f6759e2aa
BLAKE2b-256 09b25b95ea11f97f9d00cbcfc9577d47157e505e8411e3be35dd40d24c4e62a3

See more details on using hashes here.

File details

Details for the file ballistics_engine-0.27.1-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ballistics_engine-0.27.1-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c99bfca8391812258c178e6f7b4f7107f420091feeefa72c32778163063d9a81
MD5 acc1e1201ab1894f496b1c68f81e3f93
BLAKE2b-256 db53ece118ecbcead673825b8e4fd95892396f2f1c19154fbe5b9ea90b972900

See more details on using hashes here.

File details

Details for the file ballistics_engine-0.27.1-cp38-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for ballistics_engine-0.27.1-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5091c805576fbfea007a792d91c7ab87cf6518f7d452576f393e068b8f1ee33b
MD5 bc69756f6ecbe27f707d282a12cf6f35
BLAKE2b-256 97d7d3c8042ae284b19e23015210426c3e868622e4e0e797006f63114745a158

See more details on using hashes here.

Release history Release notifications | RSS feed

0.36.1

6 files

0.36.0

6 files

0.35.0

6 files

0.34.0

6 files

0.33.4

6 files

0.33.3

6 files

0.33.1

6 files

0.33.0

6 files

0.32.0

6 files

0.31.0

6 files

0.30.1

6 files

0.30.0

6 files

0.29.0

6 files

0.28.1

6 files

0.28.0

6 files

This release

0.27.1 This release

6 files

0.27.0

6 files

0.26.0

6 files

0.25.2

6 files

0.25.0

6 files

0.24.2

6 files

0.24.1

6 files

0.24.0

6 files

0.23.0

6 files

0.22.4

6 files

0.22.1

6 files

0.22.0

6 files

0.21.5

6 files

0.21.4

6 files

0.21.3

6 files

0.21.2

5 files

0.21.1

5 files

0.21.0

5 files

0.18.3

6 files

0.18.2

6 files

0.18.1

6 files

0.17.0

6 files

0.13.17

14 files

0.13.10

14 files

0.13.4

20 files

0.13.3

22 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page