Orbis.Collision (Orbis v0.9.1)

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.

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.