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

Uploaded CPython 3.8+Windows x86-64

ballistics_engine-0.18.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (637.3 kB view details)

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

ballistics_engine-0.18.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (623.5 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

ballistics_engine-0.18.3-cp38-abi3-macosx_11_0_arm64.whl (585.4 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

ballistics_engine-0.18.3-cp38-abi3-macosx_10_12_x86_64.whl (604.0 kB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: ballistics_engine-0.18.3.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.3.tar.gz
Algorithm Hash digest
SHA256 f2452a80e3f179fc1cf5f81b93a5ebf3c287600d826ae1082c0c3e1375d68aec
MD5 4a6ae5ca4a4a955b64ff71dac4a89008
BLAKE2b-256 3d17707cb09d29b0104bcdc836798c1dbd4cc28d58ecee8b754d42252edfa11b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.18.3-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 9ddb8ea9baa17d157994bddbdc6c109d4883579b38d873dfac167889a1bf3840
MD5 5aba7c244c2f3e9da68ccfca3585f1d0
BLAKE2b-256 1b0e47e52cd0384e60422a2b97363a968728e6ef55b9d57eb44965e299882f55

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.18.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 409f2429f8fbd5dfec1e48ef6221ca3e50b6265a462365dcdceeb71335b5ef21
MD5 a0c49e16024701707481df702e5ad2c9
BLAKE2b-256 93864d5fedead5671770ee4d72c7abfee58418959a1db886da0eb16e5b71d9ae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.18.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7fd1e72d49ec11eea02c22e4e7cd8d043f266769541d925fddac96d8215cd6b3
MD5 46ef0644dd89651412a9b00f7cacc472
BLAKE2b-256 b8f913682474ff377b59b0d402874268413b73743cb5ef6970f2e0a0a370a7df

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.18.3-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 98fb93e3bc9335c55df11fd036db675a57b6522809ca90f1ab37aaeedf588953
MD5 4e3336a8c855d5892128fe3e4484c580
BLAKE2b-256 9ccde1433495b99d371adb2b7c51f5c12658f64d411861abfc47bff8dfbb7e9e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.18.3-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 59625f79ae3c0f008b6ba4b2097565102848719e829083e41fb2d7e4eca711fa
MD5 4653c1bd67030a947ce7854ba5bd4569
BLAKE2b-256 2b469537c522bb12f908ecbf9d812c050c260964f267c6a2919ab7401e4c2356

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