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.36.0.tar.gz (55.5 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.36.0-cp38-abi3-win_amd64.whl (591.1 kB view details)

Uploaded CPython 3.8+Windows x86-64

ballistics_engine-0.36.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (683.3 kB view details)

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

ballistics_engine-0.36.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (663.5 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

ballistics_engine-0.36.0-cp38-abi3-macosx_11_0_arm64.whl (627.8 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

ballistics_engine-0.36.0-cp38-abi3-macosx_10_12_x86_64.whl (654.7 kB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for ballistics_engine-0.36.0.tar.gz
Algorithm Hash digest
SHA256 c017570688a038c3b1e9e74b314dce5d5583804f71bfd2c0d5e31922e69dcd9c
MD5 89697ca439f2c5f878349e5bd2655153
BLAKE2b-256 6cf29f33806cced9b3c4374073d2469f69a03546fda0b721ce873dd0e54689f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.36.0-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 2916aee469728166047ff1a275b3ddab49fcb1d567a33137acd1bc2b7cf43d86
MD5 5ca281f400435571b8c107aecb4a9d37
BLAKE2b-256 c25ba68ef0e675af8e4799898aa7a68938013740a1c2c74751706d4bd592a7fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.36.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4d66482abeab3c562307b4df3d1a9dd0d2feee557ad84552998c6bfac3136a9a
MD5 5a0f11d650a63f91fc14b55bf710538b
BLAKE2b-256 560026a3ed8770ff1bac2844517b2a063c01a7d59b5ba56d7c11c0fbd0c2b589

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.36.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1b9b4bafdec2a0839fd6d5b76ed61579e06cd924258f8e56a3b746c2de7bba37
MD5 0c0bd1253da63a3e0a214f0ea7734d22
BLAKE2b-256 8b588e31b808b7e2496d5741a6cadc30b701c349f2d80aa8f8ee90aae0b02f87

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.36.0-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c142d4c0f7d6c9eb0034c56ee1c0593593462bd6e6fbe8646c015d37151d39d5
MD5 d22b70240070836c852c4ed7eac0a987
BLAKE2b-256 612e615e9f4fe0bf9694aa778c084aa784748d42b87b438aa6071448c275d622

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.36.0-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ef3eae94f1098452bffafcedfa1ef89e0c875d1b8bb3afb3ee34dded88fc82ba
MD5 f2fa6957e465359c25e88ad464f33d5c
BLAKE2b-256 a7507f0e95b038d15bf3fa155f2c412056437f573515faba0511953d371170ab

See more details on using hashes here.

Release history Release notifications | RSS feed

0.36.1

6 files

This release

0.36.0 This release

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

0.27.1

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