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.27.0.tar.gz (50.3 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.27.0-cp38-abi3-win_amd64.whl (574.1 kB view details)

Uploaded CPython 3.8+Windows x86-64

ballistics_engine-0.27.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (667.1 kB view details)

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

ballistics_engine-0.27.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (646.7 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

ballistics_engine-0.27.0-cp38-abi3-macosx_11_0_arm64.whl (612.3 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

ballistics_engine-0.27.0-cp38-abi3-macosx_10_12_x86_64.whl (639.4 kB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for ballistics_engine-0.27.0.tar.gz
Algorithm Hash digest
SHA256 277319563ccea36505ffab9f8a3665c2c5f5caa910d0096b2e812bb1aa3e835c
MD5 404b248fece100d5c0f66fd5f0a05f2f
BLAKE2b-256 224b5221528700c40b95d1df0e71ea623bc97f5011bcbcbeaf31a1f2a048bb16

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.27.0-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 74c77e2e3a16e27dbae7fafae853101458b84a4fbc63d188c99555bcb0c9c6c6
MD5 ad8efb354cfa94cbd1705d1e44b71045
BLAKE2b-256 8d1822e2a9b816c6c03d884f2a92c639b69075ae7e188284972db2f4ec23955c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.27.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 98c65a543c73c8ecc5fc52852d088210591c6076a82ec0f17e2f2c5498e9ca15
MD5 18864b94fbee098bb25ae3dadf19479c
BLAKE2b-256 d32f885e6d7c31790024bd432512d5721edcbdee772275c524cbdc153df3ca08

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.27.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bf762b2de0bf0cfb0e77a714a7837133e913a410c97f023a9d019acdc118e10f
MD5 b86c0dd7d982c3733be26941d482a18b
BLAKE2b-256 60061b30238d36c200cb176e9b8ee03aa5feb1e28fe6f22b7ebd72f30a8395e4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.27.0-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7b24c6eeb8b7034c381678e2740d146a4aae112372f470343a876e88884ddf05
MD5 0cb47b962add569305788c1353551a3c
BLAKE2b-256 3e073b626fa341f3f8f3204adfd51b272972ab653d1f12617fc842dbbbebdd5c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.27.0-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9f962204aef15d295133703a5039fd154b8ef3ee3ff27342f3079fe35dbb849b
MD5 84aa55ee527086777bb7f7ad34856a56
BLAKE2b-256 4ec94c59f1ee0d81803fc15dc6a8f08797b2b88f1940e69d1d067b499d4d640b

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