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.31.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.31.0-cp38-abi3-win_amd64.whl (585.8 kB view details)

Uploaded CPython 3.8+Windows x86-64

ballistics_engine-0.31.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (678.5 kB view details)

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

ballistics_engine-0.31.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (657.8 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

ballistics_engine-0.31.0-cp38-abi3-macosx_11_0_arm64.whl (622.9 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

ballistics_engine-0.31.0-cp38-abi3-macosx_10_12_x86_64.whl (651.0 kB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: ballistics_engine-0.31.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.31.0.tar.gz
Algorithm Hash digest
SHA256 876efe6eb5be59e88b470a07ddc856e6c8668eb980fa378e8a8a7c3d368c7aec
MD5 bb2953de2f1aac4b0ee72b98db96f3f6
BLAKE2b-256 ea7208adac6034f2ccd074bc7422e9eec8b096614caf6632c14dad3aa352b08c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.31.0-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 2aee35e3b8eb44e0cbdc719d67c095f72863cea0ef4143a9a5fb57d5be271257
MD5 00f2f3bb0116812e01b1035576f64701
BLAKE2b-256 bc6f1c29ea822e9f3c9f029eb9333cc2ba1a3832a0dfe4fcccd1ed716861874e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.31.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5de2f0ab7e790aa62a6557416b93cd58634b65d5e06f7d8844ae35fac10bfa47
MD5 1815548703dc99cc2e4f7de3c0f8a298
BLAKE2b-256 8af832e4cd15f29343766a2c3702c3f9a09f77a883beedf8d6425c28b554b38c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.31.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7279b07a5dda9b815d2f0d9ca9a35cda5e0fb59e100e96f0f358bd0f4a7395d7
MD5 2f6621d5870198808ef5548377f25272
BLAKE2b-256 3dcc20ddb812a614e133955608fd347ba404aefbc14f46f9cf86f1bfe5d49a95

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.31.0-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2f128486f326ec6d7f6558179c036943aae6324f3b519900d3fe808f810a6ef7
MD5 4cfef7d1aecc79df1150f55f70fce726
BLAKE2b-256 6f2a8fd6f14a00e0300b7c1b436899915949c8e771c7b79d864788332a2748da

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.31.0-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9b4bf79f6a6eaea02fbe9b4f98c8861a345c1c1048ba998a9534656eae785524
MD5 be604cf6e81ed30fa87275ad1fdd19aa
BLAKE2b-256 49ffd162789221a1e6bc61b5a4e1dc4b2d1af41526d1ea9146bb764f759253cd

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

This release

0.31.0 This release

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