Collision probability calculation for close approaches.
Computes Pc from relative state, covariance, and hard-body radius
using encounter-plane methods such as Foster 2D.
This module is intended for operational conjunction screening and standards-based workflows such as CCSDS CDM ingestion.
The encounter geometry and Pc integration are implemented in the
astrodynamics core; this module validates the covariance inputs, selects
the method, marshals across the NIF, and packages the %Result{}.
Summary
Functions
Compute collision probability from two objects' states and covariances.
Compute Pc using the Alfano (2005) method.
Compute Pc using the 2D Foster method with equal-area square approximation.
Compute Pc using the 2D Foster method with numerical integration over the circle.
Types
Functions
@spec probability( params(), keyword() ) :: {:ok, Orbis.Collision.Result.t()} | {:error, String.t()}
Compute collision probability from two objects' states and covariances.
All positions in km, velocities in km/s, covariances in km².
Options
:method— one of::equal_area(default) — fast Foster 2D equal-area-square approximation:numerical— Foster 2D with polar-grid numerical integration:alfano_2005— Alfano (2005) 1D Simpson's rule with analytical cross-axis integration. Independent cross-check against the Foster methods.
Returns {:ok, %Result{}} or {:error, reason}.
@spec probability_alfano_2005(params()) :: {:ok, Orbis.Collision.Result.t()} | {:error, String.t()}
Compute Pc using the Alfano (2005) method.
Uses 1D Simpson's composite rule along the principal x axis of the
encounter-plane covariance, with the cross-axis integration evaluated
analytically as the difference of two error functions. This trades the
2D quadrature grid used by probability_numerical/1 for a 1D scan that
is both cheaper and typically more accurate for elongated covariances.
Reference: Alfano, S., "A Numerical Implementation of Spherical Object Collision Probability," Journal of the Astronautical Sciences, Vol. 53, No. 1, Jan-Mar 2005, pp. 103-109.
@spec probability_equal_area(params()) :: {:ok, Orbis.Collision.Result.t()} | {:error, String.t()}
Compute Pc using the 2D Foster method with equal-area square approximation.
@spec probability_numerical(params()) :: {:ok, Orbis.Collision.Result.t()} | {:error, String.t()}
Compute Pc using the 2D Foster method with numerical integration over the circle.