ballistics_engine/
lib.rs

1//! # Ballistics Engine
2//! 
3//! High-performance ballistics trajectory calculation engine with comprehensive physics modeling.
4//! 
5//! ## Interactive Web Demo
6//! 
7//! Try the ballistics engine directly in your browser at [https://ballistics.rs/](https://ballistics.rs/)
8//! 
9//! ## Features
10//! 
11//! - Professional-grade trajectory calculations with multiple drag models
12//! - Advanced physics including spin drift, Coriolis effect, and Magnus force
13//! - Monte Carlo simulations for uncertainty analysis
14//! - WebAssembly support for browser-based applications
15//! - FFI bindings for iOS and Android development
16
17// Re-export the main types and functions
18pub use drag_model::DragModel;
19pub use cli_api::{
20    BallisticInputs, TrajectorySolver, WindConditions, AtmosphericConditions,
21    TrajectoryResult, TrajectoryPoint, MonteCarloParams, MonteCarloResults,
22    run_monte_carlo, run_monte_carlo_with_wind, calculate_zero_angle, calculate_zero_angle_with_conditions,
23    estimate_bc_from_trajectory, BallisticsError,
24};
25
26// Module declarations
27mod drag_model;
28pub mod cli_api;
29pub mod ffi;
30#[cfg(target_arch = "wasm32")]
31pub mod wasm;
32#[cfg(test)]
33mod wasm_tests;
34mod constants;
35mod drag;
36mod drag_tables;
37mod atmosphere;
38mod wind;
39mod wind_shear;
40mod derivatives;
41mod trajectory_solver;
42pub mod trajectory_sampling;
43mod fast_trajectory;
44mod spin_drift;
45pub mod spin_decay;
46pub mod pitch_damping;
47mod precession_nutation;
48mod aerodynamic_jump;
49mod angle_calculations;
50pub mod transonic_drag;
51mod reynolds;
52mod form_factor;
53mod monte_carlo;
54pub mod bc_estimation;
55pub mod stability;
56
57// Internal type alias for compatibility
58pub(crate) type InternalBallisticInputs = BallisticInputs;
59
60// BC segment data for velocity-dependent BC
61#[derive(Debug, Clone)]
62pub struct BCSegmentData {
63    pub velocity_min: f64,
64    pub velocity_max: f64,
65    pub bc_value: f64,
66}