Skip to main content

High-performance ballistics trajectory engine with professional physics

Project description

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

Project details


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.26.0.tar.gz (51.9 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.26.0-cp38-abi3-win_amd64.whl (586.6 kB view details)

Uploaded CPython 3.8+Windows x86-64

ballistics_engine-0.26.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (677.4 kB view details)

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

ballistics_engine-0.26.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (656.8 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

ballistics_engine-0.26.0-cp38-abi3-macosx_11_0_arm64.whl (622.7 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

ballistics_engine-0.26.0-cp38-abi3-macosx_10_12_x86_64.whl (650.2 kB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for ballistics_engine-0.26.0.tar.gz
Algorithm Hash digest
SHA256 a97f61a511ee244954b265e00809647cc48f7b034e7fad4a07aeafb60a8d331c
MD5 3a4bc3f23f1441c15312d5a3deef0d95
BLAKE2b-256 fff2bf886a25c6d8adcabcf409ee073112d6bf24630b761bfb7f2224ad4d0906

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.26.0-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 f1e929f356abd9cbe74b194654dad0d94a798bb954c58c24dece07ba1c8730ed
MD5 71bbbc5b8af5c232ff517845d67322a7
BLAKE2b-256 46a0250899d2590eda6210496aaa11bb7b1020176e4265bf5037d904d2f93217

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.26.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 30e5ac0d74a3583d04b4c61013a7bf23058677d1e060a9f528b9e4c4a62412c7
MD5 1f11e48defb4f836e53eb6c870a1d659
BLAKE2b-256 dd724b222dbdbf290a891bb06f0f3362c8a7d0dab21b0101f32d7139cd1b2ae7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.26.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 798182d45af5737bd56dbd2df776664c77d9cbaf4efa267636c74e4f98bc8752
MD5 e15bd283e460811db664bece37a575de
BLAKE2b-256 b5d6197792ba369fc648894ce683532f7b4a4ebe49d822f7c268c0fc531b0f5c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.26.0-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4f2606a0eb317ebca023a3e403b18590a8a46f59477779f6bd78783613261005
MD5 44a1a7374584820e9ecd7ca091f9837e
BLAKE2b-256 66d0d4b52eb52baf0dbc86bdf421d9b54febf1f4a3f635863c9d6e270a83e50e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.26.0-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d3fcfb30a70e24fe9080502af013f8f63c95715cfd30a6954a9e38f43b29f11f
MD5 4383f6a52a153853e256cf581ecce1db
BLAKE2b-256 686236bcbfda3e2bb79c3c84603d932e930efe7bfba856a06d9243ff34fbcfcb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page