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.22.4.tar.gz (33.6 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.22.4-cp38-abi3-win_amd64.whl (544.9 kB view details)

Uploaded CPython 3.8+Windows x86-64

ballistics_engine-0.22.4-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (636.0 kB view details)

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

ballistics_engine-0.22.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (615.9 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

ballistics_engine-0.22.4-cp38-abi3-macosx_11_0_arm64.whl (590.1 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

ballistics_engine-0.22.4-cp38-abi3-macosx_10_12_x86_64.whl (616.2 kB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for ballistics_engine-0.22.4.tar.gz
Algorithm Hash digest
SHA256 ec733f8be3700ef3ed901569b1aaf1266c7f4da254177c92a2a72ae9e44adb7c
MD5 6193bc7a1d03a8a71e7746515960ecb4
BLAKE2b-256 6115d9bb76cf2c894df170eb84dcb67cb0324ad07bc21c1bea661f129657dbc4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.22.4-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 1db369429d49023dcfa941fe32adbd03ba2a393e570ac759cda7a176dca2bb7f
MD5 625dbb75c9fec61afbc282c593508706
BLAKE2b-256 100261800adef15cc51d85f2f3b2aca56bccbda541bc22e3948e9438c95efc24

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.22.4-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9ac953a9a0db8abf32cf1fab263465f9f359f275d0203a587f5b6f7686e1af6b
MD5 355b1b9130747b9140edb79bf0035108
BLAKE2b-256 42b353590fdece0e4d16ed4b768d763211d616880c603735ff484a64a03218d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.22.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d2beaf063a00e66e734005ff682446fd906c264d39096e1597b9a5a235e4a9d0
MD5 0029540594a0bb39e73fdb9b26ebcdb9
BLAKE2b-256 e691b5e2bee82830c26447112873f9439c73dd232cedc0dc3b027def08175628

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.22.4-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3d57c2203cfe4b578014244da911b893d89f498dbbc3efa0f3bdbb9ce8eff0fa
MD5 66b78c0cb15ee117a93360bed6cdabb5
BLAKE2b-256 629770dea5d0b6901142195406e1ade144cb6b8ce0c4d9c273548003fdb1aed3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.22.4-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 48da9ce11464fa632abb728cae01c8b657b6c467471980b0a016d5121a47a1cc
MD5 78c9286af8ce6b0fa6118c7dc6b7b7fd
BLAKE2b-256 7e638f0a31aa370707594f1afe80a633eff21a9a2ca3f3decf0f79e2193152b3

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