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.18.1.tar.gz (33.5 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.18.1-cp38-abi3-win_amd64.whl (534.6 kB view details)

Uploaded CPython 3.8+Windows x86-64

ballistics_engine-0.18.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (634.8 kB view details)

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

ballistics_engine-0.18.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (621.7 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

ballistics_engine-0.18.1-cp38-abi3-macosx_11_0_arm64.whl (583.9 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

ballistics_engine-0.18.1-cp38-abi3-macosx_10_12_x86_64.whl (601.9 kB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for ballistics_engine-0.18.1.tar.gz
Algorithm Hash digest
SHA256 f9dccd20d84d12c8f65890698f8792526081d478521671bc999f4ee638484bc8
MD5 c7497835351dcdab415118cf3f18ff89
BLAKE2b-256 eb47e0805553f1ef8c11c6147354ed3ad7c862489ac5c25b6eaefb28af32ef01

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.18.1-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 89c565c5eaeb744d42877e2660833925004ba783a0510207eb141f8150ca0718
MD5 568170c268697d301b5fddfdc861ffc2
BLAKE2b-256 41f7b36627673286ab622f75a7c3e06babf294b3a5f8d52100ebb7ff300dbd19

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.18.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e82f6e16597f91730bc501316a878d3a011660b016d2547a5a790f184fdd5e7b
MD5 df62b867f8087825b64dabda5efc5544
BLAKE2b-256 534a929ecb4397b976c5d8ec254951f35f53c782a9c6c20c2e674fe09a16cb55

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.18.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d18545d06fbd128d5d016d1bb7b7ee616894f87114d39dca366cfb2226467ce8
MD5 c8997993bc77de72ace886b2d329d479
BLAKE2b-256 2f7b1d9be404c4819c15d7d7db28d92726bcd033f7417faf27a2dc3c4da0a87e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.18.1-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 37701517d293a345eb86e2ee5a39a8ad503ced359ff6031a2f5da31a16bcd354
MD5 268cd525cf9243d3a4da157acc14bd00
BLAKE2b-256 330a53762a97398cdbd42d543afe83b1e806e251a7b3816f20b03e6d1eacac44

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.18.1-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4c46c3c6c86f24f4a0adab4aab4636f24b5f1e7dc22fa2c5424f475c3bb6eeaa
MD5 c1e2bf01c32133e1ac83ab4088a133bd
BLAKE2b-256 f09d72dd9d90adc5dd71e1fe45985d78e3970df241f92ad2f5054a4c8f539a3b

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