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

Uploaded CPython 3.8+Windows x86-64

ballistics_engine-0.18.2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (636.5 kB view details)

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

ballistics_engine-0.18.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (622.5 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

ballistics_engine-0.18.2-cp38-abi3-macosx_11_0_arm64.whl (585.1 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

ballistics_engine-0.18.2-cp38-abi3-macosx_10_12_x86_64.whl (603.2 kB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: ballistics_engine-0.18.2.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.2.tar.gz
Algorithm Hash digest
SHA256 9b66015adedfb98f78cc7884e47f6f56c34c487c22fa1ab475d1e971b6600080
MD5 e1b776d850b389118483f368911f4861
BLAKE2b-256 6c6c7dbd63d26c2b88331b6ee7a3b2bc428d0dfbd15b83e5931612e05801c593

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.18.2-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 37edec4e5ab19ae9420f4b2b2c59b81709150e41e6aaa7669f218ce14897c52e
MD5 48c5cf35b7adf9cd8dacb613e145ab6b
BLAKE2b-256 81237b94fb862d699207f4ea45350b504f51ebc1835944ff5544b22040b1f758

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.18.2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ae49fbe0dd46fd6b81fc884fb06487e075718397405fcbe76cd2648a2b34d4d5
MD5 9aba47bd2cd8d4c8a1b4f299bf61fa47
BLAKE2b-256 216012e3b134ec04755d1c71fa6c3c74e63887d8bb3f601ab5e4a23b3e662d4c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.18.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4cab195e13c81d2633d2f9e9c4b159ecb48531cb5851b3edf9d9bb730e9d0104
MD5 a417f1dd25bd4f1af5b4ff5c3f01076c
BLAKE2b-256 c374b9e021f8169e861a4af7b197f2edb4f05d3b43b31dafd899d3f1007a14c6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.18.2-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2b45b77c6f9269091b924769664a8750b8d78282383e4b4829fdc4c5e232023a
MD5 260b20fda7069496d122a6c6e84603d0
BLAKE2b-256 d50f8f5cfd63df0992e29339cad7339d7ec11e2117672a897f96c88e9de8b118

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.18.2-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 42242a9e701acecf9b4decdcd28be2b2c7aaa8363de2f88bf4617b7c7de4ed3a
MD5 816dfc79a81944d02ef73c5535a4cb41
BLAKE2b-256 d0341542ea89538ce61a3ef9c0e83a4625825ccb791fb7e60250a4c707e8ae51

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