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

Uploaded CPython 3.8+Windows x86-64

ballistics_engine-0.21.5-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (637.5 kB view details)

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

ballistics_engine-0.21.5-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (621.1 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

ballistics_engine-0.21.5-cp38-abi3-macosx_11_0_arm64.whl (582.7 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

ballistics_engine-0.21.5-cp38-abi3-macosx_10_12_x86_64.whl (605.1 kB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: ballistics_engine-0.21.5.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.5.tar.gz
Algorithm Hash digest
SHA256 c4e06754ceb67a24f7682265130da9176c91b8e6933352a6c3fa70bdd51a0f37
MD5 b772ca3f22725d6a8e013144474327ed
BLAKE2b-256 a14cfefc9431a74667d6f9c08a463f7d7101ce99a8e8c2c4218238eecc91f382

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.21.5-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 81a74d381c62f55c2956ddbae916d126089d78aa266f8dc50897f44be75a0b48
MD5 d6d3155ef4b613bb3b41e23c37e2823d
BLAKE2b-256 42f67e414270fcc36fa8273a3538c29ac89f60e03233321610f52c5ee1015ae4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.21.5-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 80632c4ca12fb58b50655dbe3a2b42e9c37b296671677dd8bdb2614051ffa48d
MD5 c1d6d1b07927e08160981a3ffe1cfe30
BLAKE2b-256 06b84176477d5b714adb416ebca37d3200b0c059c35738560495087573ee380b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.21.5-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e45c686122610c207c6ba2cd4c7f319869e136f89cc1641971b9e13869ce94e9
MD5 c5af1c5c990542b6a403b1e0a7d96432
BLAKE2b-256 567c3ab266a2473e69294082359439f8cc573e35b22e179fc3c3a83d7acb79c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.21.5-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e6dfe1f7a45f7e5ff05cfea075d6f1e1cb128e3a637a2dc23474816f06d0c3e6
MD5 bf961a571b5634e818677009e490d5c0
BLAKE2b-256 825f03083539abca41aa3460c22a0fc39716a9e843e761f2e8da542462524648

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.21.5-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 66e6250e354bf5419cee7f6df4267741c6db0678d569896e50333cf513321f3d
MD5 502c90acc9e08a03bb04270dc3fe0790
BLAKE2b-256 81db8084f6cdb7c143c993968166259999da639019644238da41b525fd734d19

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