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 cli_api::{
19 calculate_zero_angle, calculate_zero_angle_with_conditions, estimate_bc_from_trajectory,
20 run_monte_carlo, run_monte_carlo_with_wind, AtmosphericConditions, BallisticInputs,
21 BallisticsError, MonteCarloParams, MonteCarloResults, TrajectoryPoint, TrajectoryResult,
22 TrajectorySolver, WindConditions,
23};
24pub use drag_model::DragModel;
25
26// Module declarations
27pub mod cli_api;
28mod drag_model;
29pub mod ffi;
30#[cfg(target_arch = "wasm32")]
31pub mod wasm;
32#[cfg(test)]
33mod wasm_tests;
34// MBA-154: Make constants public for ballistics_rust wrapping
35pub mod atmosphere;
36pub mod constants;
37pub mod drag;
38mod drag_tables;
39pub mod wind;
40// MBA-153: Make wind_shear public for ballistics_rust wrapping
41pub mod wind_shear;
42// MBA-154: Make derivatives public for ballistics_rust wrapping
43pub mod derivatives;
44// MBA-154: Make trajectory_solver public for ballistics_rust wrapping
45pub mod trajectory_sampling;
46pub mod trajectory_solver;
47// MBA-154: Make fast_trajectory public for ballistics_rust wrapping
48pub mod fast_trajectory;
49// MBA-155: Add advanced integration methods (RK4, RK45)
50pub mod trajectory_integration;
51// MBA-149 Phase 5 Priority 2: Export enhanced spin_drift
52pub mod pitch_damping;
53pub mod spin_decay;
54pub mod spin_drift;
55pub mod spin_drift_advanced;
56// MBA-149 Phase 5 Priority 2: Export enhanced precession_nutation
57pub mod precession_nutation;
58// MBA-153: Make aerodynamic_jump public for ballistics_rust wrapping
59pub mod aerodynamic_jump;
60// MBA-149 Phase 5 Priority 2: Export enhanced angle_calculations
61pub mod angle_calculations;
62pub mod transonic_drag;
63// MBA-153: Make reynolds public for ballistics_rust wrapping
64pub mod reynolds;
65// MBA-149 Phase 5 Priority 2: Export enhanced form_factor
66pub mod form_factor;
67// MBA-153: Make monte_carlo public for ballistics_rust wrapping
68pub mod bc_estimation;
69pub mod cluster_bc;
70pub mod monte_carlo;
71pub mod stability;
72pub mod stability_advanced;
73
74// Online mode: HTTP client for Flask API (feature-gated)
75#[cfg(feature = "online")]
76pub mod api_client;
77
78// Internal type alias for compatibility
79pub(crate) type InternalBallisticInputs = BallisticInputs;
80
81// BC segment data for velocity-dependent BC
82#[derive(Debug, Clone)]
83pub struct BCSegmentData {
84 pub velocity_min: f64,
85 pub velocity_max: f64,
86 pub bc_value: f64,
87}