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.1.tar.gz (32.9 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.1-cp38-abi3-win_amd64.whl (538.1 kB view details)

Uploaded CPython 3.8+Windows x86-64

ballistics_engine-0.22.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (640.9 kB view details)

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

ballistics_engine-0.22.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (621.0 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

ballistics_engine-0.22.1-cp38-abi3-macosx_11_0_arm64.whl (583.9 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

ballistics_engine-0.22.1-cp38-abi3-macosx_10_12_x86_64.whl (610.1 kB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for ballistics_engine-0.22.1.tar.gz
Algorithm Hash digest
SHA256 8cce52a5947779bff54b508e9277d71bed5c74d6d730ed6e2b5ebf44b95e70bf
MD5 3b721aff3304e4ca9dd7d7517b85c0e9
BLAKE2b-256 ea03d689f30ffea6222493c73de0c7d27ab92f62a8abee06c47b74bfdbacd18d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.22.1-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 87abf8cbc9a6d3ae3cc74d8a0dab47ac0bf67918087f7f767ff2a927a342af26
MD5 8b8077f4c6e42831393e7650df4364a5
BLAKE2b-256 834f13190c45651b8b59592e12bf12f76a9b2dd6dc6d141070fbe9fef46b3fbd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.22.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8b64f57605e21986ee63ba9cd52482be5240fc1c1ad7f7b864d21048c5c63c68
MD5 a293bc7ffce0c1fbc302cca7eb9d2a36
BLAKE2b-256 bd6a0e9dc745b7cf6608222c61e5a918aa47f73cc18d4632579b3b83a5a058a3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.22.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6f5d1d8b3b99d98a2acf482aa5b91c8ad92053f9c7ab52ddadb1d8863a866cf8
MD5 e69a33e08a324c0e9584930c5e4949d8
BLAKE2b-256 b75008f728d0bdc362d5c9a76edf36f41287c4ea0dff6faa9f53ae3bd272de6e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.22.1-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 38b0a3c34c708c87b8afbb6eecba9cc5fe5e4e4c10eeb5c519a0728ce2a62cef
MD5 4c0f90376a376fe69e5fc3d444609b23
BLAKE2b-256 5acab8b0e7c7ced2bdfa8fad89ec0777fa4f5ee63098746258f9e6ecd5f8c456

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.22.1-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 3d2ec558ddc74bce0c7f66f98a96ac0f4c4a5b5835307646dca4a0deda71f927
MD5 8cc8eace622badbad42cee9bbf89a49a
BLAKE2b-256 a01e14c8c390028b32b1791a9aee282a9253b36cfdc839f7802527f91b74bce5

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