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.25.2.tar.gz (51.8 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.25.2-cp38-abi3-win_amd64.whl (585.8 kB view details)

Uploaded CPython 3.8+Windows x86-64

ballistics_engine-0.25.2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (676.0 kB view details)

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

ballistics_engine-0.25.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (655.6 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

ballistics_engine-0.25.2-cp38-abi3-macosx_11_0_arm64.whl (621.4 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

ballistics_engine-0.25.2-cp38-abi3-macosx_10_12_x86_64.whl (661.5 kB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for ballistics_engine-0.25.2.tar.gz
Algorithm Hash digest
SHA256 5c48576d312edc5455c768c677e3240d341b22073c9815c1a3069a85e1354876
MD5 9e6ca28027c3050b108f914b4aea7159
BLAKE2b-256 0b4327521a7366fe3d5a066404152b8d4055b866968f1c03019f8a953e435e42

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.25.2-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 e99f92e3b6c41746eb909318241d3b863cc08d597bc84235661285b356c3cb01
MD5 3e1ebbf51cad083fe5c7c4ea4a89f9cf
BLAKE2b-256 4aa48a812febde46914600db626ee972bbed529ee8095c37203a30243620be69

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.25.2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cf66118ecabeeb70c28e8cf9e10ebe9efa41d213e4898053b7fd7dfb24b595ab
MD5 5b524506c41f179d54bdc8717b7df50b
BLAKE2b-256 f2fd94b53f571c2e12e91e1c0c3b5dcfb0f43a98d3a9855a6ecaefca5e5af3ac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.25.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 74ca40033233a4699a47ff90797142697e760d5d522639256761a3d89b0883b7
MD5 044c07120b502a335125091662a67a83
BLAKE2b-256 827436076469ff69d61901c46582aa064ea63de05501002766a2baa09f693696

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.25.2-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ef86d74696e73f7c5f6810dad34dded441a0f88da803e3cb85f71c70b2226a4c
MD5 223a8f14a37402e72e202a3d797e0546
BLAKE2b-256 9187b2230d173c6586ddbef4a82871becd3e2845bb2852781e7903d6f4d855f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ballistics_engine-0.25.2-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d99c80516b3f7c7625461fdd3417ec892bb643707e01007e8180efa3abd3e103
MD5 5d456896ffa165a19b5d46d21f2bf8c0
BLAKE2b-256 f850788b0bc2a5259c5c41cbe78e051eb3a5a626de2612678f992916405730bf

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