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.30.0.tar.gz (55.6 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.30.0-cp38-abi3-win_amd64.whl (586.1 kB view details)

Uploaded CPython 3.8+Windows x86-64

ballistics_engine-0.30.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (677.9 kB view details)

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

ballistics_engine-0.30.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (657.4 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

ballistics_engine-0.30.0-cp38-abi3-macosx_11_0_arm64.whl (622.4 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

ballistics_engine-0.30.0-cp38-abi3-macosx_10_12_x86_64.whl (650.9 kB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for ballistics_engine-0.30.0.tar.gz
Algorithm Hash digest
SHA256 b11793cd684b5ee5aa6c067bb1cd7bc335bf2521904b0c214b00529419c2c222
MD5 6d35c2f1a96037a7ce7f90c39d7e0ce9
BLAKE2b-256 6511bc4b6717ca23e559368d3044d21cf78c3cb4cc39c9fad3c983f2fefb4ae7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.30.0-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 c8d1949c9d11e2d5d031bc5d43bc84abb4c2e79f0c2bf174fefb97d785ea9075
MD5 38dcc7ee3da2c245447e6fab9fd75c9a
BLAKE2b-256 4d67c868fe0745feea8b897d89d8c56a32aed9286a6f5aeb0dd0b6d8eece7add

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.30.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 54597bb0dd7e8a0a9aa9898fb96d3dc0e4bcb9eb688614c4d54edcda797da15a
MD5 be8b3f26468fbddd86d02ad021138e6d
BLAKE2b-256 b08d690b8c311b4ca0c2dfab4af341d955d38244e1b47603556c31f2d125616f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.30.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 046cc52ea8f25ead251c99d811440d45ec88034845e95e74f8ee43e74c057975
MD5 00fd63ecf61dc1a972a7d0e09f3b9224
BLAKE2b-256 d37a099c50fd1a7d2d152a101869e46e188f133d51a76d41faf1923b7852e072

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.30.0-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 510498bfa50f1e7d7a25af312b84be96b0353babf44ab721cdef5bbc2140e93e
MD5 2e3e0c0d83f94d14a23d33596197f694
BLAKE2b-256 682d725f3c71096bd22908033890cbc7a675eaff40bb1b6ff4cd253c24613e37

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.30.0-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b5bbc6cbd745d5133b641686f66758b3f1a82dc1d4198de4ddb5c3a65483d0a6
MD5 a6c59eda50da5002a505f89bcf6bbf11
BLAKE2b-256 f24047918220a6d167d552aab4fbecc53a5dd8b070afec7b5d466bce03162216

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

This release

0.30.0 This release

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