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.21.3.tar.gz (34.3 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.21.3-cp38-abi3-win_amd64.whl (537.9 kB view details)

Uploaded CPython 3.8+Windows x86-64

ballistics_engine-0.21.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (635.8 kB view details)

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

ballistics_engine-0.21.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (620.3 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

ballistics_engine-0.21.3-cp38-abi3-macosx_11_0_arm64.whl (581.0 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

ballistics_engine-0.21.3-cp38-abi3-macosx_10_12_x86_64.whl (604.1 kB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for ballistics_engine-0.21.3.tar.gz
Algorithm Hash digest
SHA256 b5cbdcb8e745a20aa24fe3fe4ba3bcc132f3e7ad520ac62f81835df38e6a2e39
MD5 ff381efdd1f13ec902465dae17769309
BLAKE2b-256 4df9dbaa314caef6cf372686ce01d3587e98f83677469a095daa7343dbac29fc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.21.3-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 637f470872bdc448c18a447da997b71843c9023971ccdf00b8047d722df7bd1e
MD5 08f055b2a8fced6c85d45ebcbc9d2fb0
BLAKE2b-256 4b7db4d60e4da2d9ed9355ba1748fd6eb013b79ffffe4e67a43659526a5b7f69

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.21.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2f4f4fe8b5768bfd49b70949b2fc53cedae5cd6c50b34e3a0c0aa014220c4e9d
MD5 92962c6f49530c5df069ec559d591b26
BLAKE2b-256 1808abbe2fca56f5f3b4efe6d027836061288cf1548b089027ef48e6e3ae596b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.21.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ff6826d9f839f834fad2285f6ad646d4f5bcd5e240136d2360c05bf2a847b22d
MD5 6daf0f93ccc488d29d71d93d7b9b8923
BLAKE2b-256 68455acd236bdfd4ff09576b8a5574dba606e39f2494157b703c5b8ffb88b321

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.21.3-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e06d04381c1b4eabe1c8637aa0d9f7c78d0d1ed4554b077382c79217cfaf9e47
MD5 2959681d70f77a7f2248217038f2af04
BLAKE2b-256 19bba1ae5d83126f1416f7e7a4bc502d659110361b6902da77ae2137c079a04b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.21.3-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 21b2b7303eb010b5c044bc0f03d28cee1dbd0ebc7e9b6b711098c9702c31a948
MD5 96972047876ee8962d866d4dbf1d9019
BLAKE2b-256 ca422912d2cac7216e817fb866f7a866ba886ffdc996bfe1a057bdd57de5089d

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