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.24.2.tar.gz (51.8 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.24.2-cp38-abi3-win_amd64.whl (590.8 kB view details)

Uploaded CPython 3.8+Windows x86-64

ballistics_engine-0.24.2-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.24.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (655.5 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

ballistics_engine-0.24.2-cp38-abi3-macosx_11_0_arm64.whl (632.0 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

ballistics_engine-0.24.2-cp38-abi3-macosx_10_12_x86_64.whl (662.2 kB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for ballistics_engine-0.24.2.tar.gz
Algorithm Hash digest
SHA256 3cf836d8b8fcab503609616badfe3b6fc27c8525d41b540e3b1cb405be3f3aad
MD5 7125f6b3b63aa0a930946308a0bcf7b5
BLAKE2b-256 261663efe78d1a71dbe2ec03bbebf72918d9beb80c6bd042111b8b73f92b0865

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.24.2-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 d2a355e9d58120c3b1000e1114be32e5f3617679ba18d3248f2f018743b5c0a8
MD5 fa6ca48a6b4c63c68e2b881343b309ee
BLAKE2b-256 1899f5b664feeba395dfd20a2b0bd419a054a661eb68b2856b9ace917d62a47d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.24.2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a9c9f9dccc7ea7410da5075263d9f118b9b01d89c6a7c9d9355dba49cc57b92d
MD5 c8a6b0ef10e2bfc1fcf5d84981047c81
BLAKE2b-256 519e5ad991415b0e8af54cee0c671f2411d396c8afa3ba7422d322d851692c30

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.24.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8719884fff4bb0ea199931f353c9f37e88295475b30473c1f049b73cd031da5c
MD5 b2c93cb22dbcad77e2333defbdfae961
BLAKE2b-256 291e649502dcc4228ee8f447d40c5ad62a72ec943375120715a6ce40b2ff8702

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.24.2-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7717e059a8e91ab9ac82ff7f495c0efc0ac03bcdbf8a9902eeb04450d856573f
MD5 eee673ffd90fbfac1b3c62ee304824c6
BLAKE2b-256 3a85c5d798edac08ccd17b6c54390ada2206d7545bc276ccf93cc4984bb840e9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.24.2-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 aa72f9c10077acb622a7ebdce505b691b691ea4cc7db7996f50273f92e963f0b
MD5 8ddd6920353778db2ef9f4b5e68be8d7
BLAKE2b-256 905e07a29b89287958c917e7734e9c7f79da248059d2488e52c5e6298bce84eb

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