Orbis.Collision (Orbis v0.31.0)

Copy Markdown View Source

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

params()

@type params() :: %{
  r1: {float(), float(), float()},
  v1: {float(), float(), float()},
  cov1: [[float()]],
  r2: {float(), float(), float()},
  v2: {float(), float(), float()},
  cov2: [[float()]],
  hard_body_radius_km: float()
}

Functions

probability(params, opts \\ [])

@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}.

probability_alfano_2005(params)

@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.

probability_equal_area(params)

@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.

probability_numerical(params)

@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.