# `Sidereon.Conjunction`
[🔗](https://github.com/neilberkman/sidereon-ex/blob/main/lib/sidereon/conjunction.ex#L1)

Time-of-closest-approach and conjunction screening helpers.

# `split_jd`

```elixir
@type split_jd() :: {number(), number()}
```

# `tca_candidate`

```elixir
@type tca_candidate() :: %{
  tca_time_jd_whole: float(),
  tca_time_jd_fraction: float(),
  tca_time_jd: float(),
  tca_seconds_since_window_start: float(),
  miss_distance_km: float(),
  relative_position_km: vec3(),
  relative_velocity_km_s: vec3()
}
```

# `tca_conjunction`

```elixir
@type tca_conjunction() :: %{
  candidate: tca_candidate(),
  pc: float(),
  miss_km: float(),
  relative_speed_km_s: float(),
  sigma_x_km: float(),
  sigma_z_km: float()
}
```

# `tle_pair`

```elixir
@type tle_pair() :: {String.t(), String.t()}
```

# `vec3`

```elixir
@type vec3() :: {float(), float(), float()}
```

# `find_tca_candidates`

```elixir
@spec find_tca_candidates(
  String.t(),
  String.t(),
  String.t(),
  String.t(),
  split_jd(),
  split_jd(),
  keyword()
) :: {:ok, [tca_candidate()]} | {:error, term()}
```

Find local TCA candidates between two TLE line pairs.

# `find_tca_conjunctions`

```elixir
@spec find_tca_conjunctions(
  String.t(),
  String.t(),
  String.t(),
  String.t(),
  split_jd(),
  split_jd(),
  number(),
  keyword()
) :: {:ok, [tca_conjunction()]} | {:error, term()}
```

Find local TCA candidates and compute collision probability at each TCA.

# `screen_tca_candidates`

```elixir
@spec screen_tca_candidates(
  String.t(),
  String.t(),
  [tle_pair()],
  split_jd(),
  split_jd(),
  number(),
  keyword()
) ::
  {:ok, [%{secondary_index: non_neg_integer(), candidate: tca_candidate()}]}
  | {:error, term()}
```

Screen one primary TLE against a secondary TLE catalog by miss-distance threshold.

# `screen_tca_conjunctions`

```elixir
@spec screen_tca_conjunctions(
  String.t(),
  String.t(),
  [tle_pair()],
  split_jd(),
  split_jd(),
  number(),
  number(),
  keyword()
) ::
  {:ok, [%{secondary_index: non_neg_integer(), conjunction: tca_conjunction()}]}
  | {:error, term()}
```

Screen one primary TLE against a secondary TLE catalog and compute collision probability for each hit.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
