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.28.0.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.28.0-cp38-abi3-win_amd64.whl (581.3 kB view details)

Uploaded CPython 3.8+Windows x86-64

ballistics_engine-0.28.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (672.1 kB view details)

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

ballistics_engine-0.28.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (653.8 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

ballistics_engine-0.28.0-cp38-abi3-macosx_11_0_arm64.whl (618.9 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

ballistics_engine-0.28.0-cp38-abi3-macosx_10_12_x86_64.whl (645.3 kB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: ballistics_engine-0.28.0.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.28.0.tar.gz
Algorithm Hash digest
SHA256 179f8defd488469e3f3f8c86f979f42a9756293b1e78085eb5725c2d5e5075d6
MD5 f554945d04b9fae90ccbee5c539a7698
BLAKE2b-256 806ba440fe22719dea9c75a07d8a7ccc842bfcc86d712892e71fb9edcb13aad1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.28.0-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 dbcb65bcfb5ef45f445879e32521f6df49cfd69c7caa57a302fb9c18fa575820
MD5 39656bdcc802fd742009fcbbb8665d63
BLAKE2b-256 7b19de870c50bfac8d78c23009fd38a8a6f6598fccc144d6253c294aff9af814

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.28.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4d3190de95f2ae40eed4214b3587095e506f5c4931d50168faea42b9b50d166a
MD5 5e9aef49e4a6a4815c62290d9da15533
BLAKE2b-256 373a94873e0ca4d7a8b31316aa5351406b1dfa336deda8ef94909ff4c1e7fb79

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.28.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 08d99ab0e640348b55b9adc7ad5d756a2857e00cdc2ea492960407958e7bf2dc
MD5 5f4c7c7e755f0f4106a144f5db64bd4c
BLAKE2b-256 983fdf0f4ffc2706e3541bfe394ec829c9a121db41554dc4e216718830d68f11

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.28.0-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 884b0ae57d0f9d1da951a04f5e35a253ece08bec85b5914f56eb5a0340b05126
MD5 02b16970c8f40555455317a388fe19c2
BLAKE2b-256 2da44fbfc66a238ef8d0ddcc3a74f1b0c3e188180e356a0da277b2334366e7da

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.28.0-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 916058e85b86aa3870c812a20c787681ca34ab214bfb48a3e7a688c8d11c3210
MD5 89b5717e1e88012d5163c3eade5cfccf
BLAKE2b-256 3677e0f15fdba6bbd686663dcacebc3e4b1923127e017e545177da9798533ff7

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

This release

0.28.0 This release

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