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

Uploaded CPython 3.8+Windows x86-64

ballistics_engine-0.33.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (682.2 kB view details)

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

ballistics_engine-0.33.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (662.3 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

ballistics_engine-0.33.1-cp38-abi3-macosx_11_0_arm64.whl (627.3 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

ballistics_engine-0.33.1-cp38-abi3-macosx_10_12_x86_64.whl (654.5 kB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: ballistics_engine-0.33.1.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.33.1.tar.gz
Algorithm Hash digest
SHA256 44ca1bd12454dd9e067c4c97c2855385c2dd6a0647ff7fcd24145fb3f994e2a5
MD5 7f7e3755c408e66134c2bd7c371c8a1a
BLAKE2b-256 53fce495486821c783ac83c48327c571ef61e4783375f32a49ba0762f74c889d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.33.1-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 4d273464003306313deefae6bdaa4bcfa07e553eac26af4734b92b255c4f9907
MD5 1661d46ae0103104b47c28d0554878fa
BLAKE2b-256 dc1f5914c9e02ef190b8f6f77ecac132c8853b0b2ad6daef69a59ea17b0a3614

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.33.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 18965f639e35bfa6cf5f2f3fea53ef84c1a33f1cb696c0aef02dedd1bd154039
MD5 22b5bb89688aed7d8ef1ab8ab37016ca
BLAKE2b-256 364004298c6ea54e572e5c78719dc488edef0323ef7c0b691eb2a2f77ed4581f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.33.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 855813bf95e344f6b4d8ccf8d6374b922f5fb421b1033295374f88773d734c5e
MD5 5c23bb4e8ca50a6f06490c433ef22278
BLAKE2b-256 281341e1c4792cea6db903d2bf882fe2de39b32b891ebe56214c5561e70909ed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.33.1-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8bfa738a690de630c4f287d6396b9d437291c5e4daf12915d83e5e496cafdbe5
MD5 b152754f431a2c935a15f9321de2ef08
BLAKE2b-256 e6413e7e5d7818f1eb057d23e7d1aa1a2a12b9a233f3accbf410cc38e424d4cb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.33.1-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 320897419282ad9190c6b2344be1160d9432dcc37b6c02cf10a85b216e8ba955
MD5 99158d810fe7448f4c9a788c18bdfe8e
BLAKE2b-256 4955363a340db903e7f7836b10b1c6d71d54b0472526db84f2b70e4600621652

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

This release

0.33.1 This release

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