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

Uploaded CPython 3.8+Windows x86-64

ballistics_engine-0.25.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (682.7 kB view details)

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

ballistics_engine-0.25.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (661.1 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

ballistics_engine-0.25.0-cp38-abi3-macosx_11_0_arm64.whl (637.8 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

ballistics_engine-0.25.0-cp38-abi3-macosx_10_12_x86_64.whl (666.7 kB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: ballistics_engine-0.25.0.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.25.0.tar.gz
Algorithm Hash digest
SHA256 87038f4eb3d0936d11341a486d855f27940c45618fac60bbf1d6fa45cf7a59e6
MD5 4d72e87f3f2cbf7fad327a94445a1c32
BLAKE2b-256 2aa4d576a038846efd08203f45d57bd4c36f27ec318bc0a6f83c96744d2255c2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.25.0-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 8534e5d4e8272fbff6fb8a11061ac6b7637b5db54209849d5ec0af7d0f97ce8f
MD5 d0067443a4653b8bb6eaeb3a23140f94
BLAKE2b-256 5a9e4321d1e7d1908acc96701ba1f78162b2017028dcfa4bafde57758776da12

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.25.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 69bc3fa03ff8532245918d2162265e7a4e1d3952f180f2ae64f675e106f2fcbf
MD5 544af21b9122685a3c71a87a5b5eb7c3
BLAKE2b-256 5fa75351a82d6b1c63fbd62088983a4ef706aab7b6b5426c40cbdcc279b7b288

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.25.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c8cd87babd73354ff747fff1407571368c553cbfbd3034deb1f017003f43d1ba
MD5 f6a87fdaf5e1dca79fbad54a6ebfa698
BLAKE2b-256 54d5957205114130889c46b64496b6a7dbd5ac1e06a257e446ecf47d574e5adf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.25.0-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 89c7f77f9e35d4d23bbea19f14880dba1f318f09d23a21b54963128139f63021
MD5 6751193ea1467d8aca48a9bd27cdc496
BLAKE2b-256 c41cbc2359f7395b94675d76a1ca51444c60a550510436154ea2e0e9942b5b6e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.25.0-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c8f8b0ae259f536b03806a3d663b5dd3a38fa608ddc51ebacc50125df480a436
MD5 8b159066302b35e1d1802bdace089838
BLAKE2b-256 c15765827a72551aca4338abde6f45f1f339881f097ff6de1fcf58a9424766d7

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