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.24.0.tar.gz (34.2 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.24.0-cp38-abi3-win_amd64.whl (557.4 kB view details)

Uploaded CPython 3.8+Windows x86-64

ballistics_engine-0.24.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (645.5 kB view details)

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

ballistics_engine-0.24.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (625.6 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

ballistics_engine-0.24.0-cp38-abi3-macosx_11_0_arm64.whl (601.7 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

ballistics_engine-0.24.0-cp38-abi3-macosx_10_12_x86_64.whl (629.9 kB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for ballistics_engine-0.24.0.tar.gz
Algorithm Hash digest
SHA256 4882bdcb9a0e22f858e64a92cba2fec3ccc678b8a413eb0bc37b01073e85b18e
MD5 75198acc607d651a24859cabbfdc523e
BLAKE2b-256 234197194c6fa94c3b3b4a02a36527f9c971cf712d50ae8eab63750a78ece2d4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.24.0-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 d5ab9c9ceecf8aed80a826581c2081490c575f6dd60719e6e02dcfb8dc637831
MD5 2c1d08ff669d1800c299ee886bdf3c77
BLAKE2b-256 d5b35668f89b9d20f3a345d2af65b0696bb3a2550e9487eba8c299e72f0327f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.24.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c3b13dbef28f98fc1f67b82a1189953e5842f6f3e6822a0d3ab4f81ab6d94487
MD5 c671a860b572312f8d46dfefe4ca2ef1
BLAKE2b-256 ceb85bcfe2e95c12924e3ab67a7da38db7e3a82ba475136c2fd9a736a7c5a401

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.24.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 efdec0f0904f7ff800157579a45f5f9d08287dbb52538f910b04d51f3c8fc770
MD5 ceedb816c88543e8a73a52e378927bf4
BLAKE2b-256 a2cdf7874c99c0a5ccb73584c4cda6458649ce5feb1584eec21170c94c48277b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.24.0-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8cb967f6125133be64f0ca4c36550f2e8c06dd6be7f0a996e216a67f12932ecf
MD5 c97401ffcc73046e64a77841be11e7d1
BLAKE2b-256 247a6002731117be249c440d308efb0043285da780cf4170913410ae1b060041

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.24.0-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 188f6bc93bb9fc7dfdecd5c50d544cd837c8fbcca2a8068dacd303eb11e70099
MD5 41f1a1f5b9b02bc8c3e89d89d8720fbd
BLAKE2b-256 1cf2179bc6bce9ae529a57a5f4572671833a48df90d310dd19bac1b49d89f971

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