tle_orbits_protocol — Logtalk 3.100.1

protocol

# `tle_orbits_protocol`

Protocol for parsing Two-Line Element sets and performing approximate portable orbit propagation with near-earth and deep-space variants plus ground-track sampling.

Availability:
`logtalk_load(tle_orbits(loader))`
Author: Paulo Moura
Version: 1:0:0
Date: 2026-05-11
Compilation flags:
`static`
Dependencies:
(none)
Remarks:
(none)
Inherited public predicates:
(none)

## Public predicates

### `parse/2`

Parses one or more TLE records from a source specification into canonical `tle(...)` terms. Supported source specifications are `atom(Atom)`, `chars(List)`, `codes(List)`, `stream(Stream)`, and `file(Path)`.

Compilation flags:
`static`
Template:
`parse(Source,TLEs)`
Mode and number of proofs:
`parse(++compound,--list(compound))` - `one_or_error`

### `parse_lines/4`

Parses a single TLE record given an optional name atom or the atom `none` plus the two raw TLE lines.

Compilation flags:
`static`
Template:
`parse_lines(Name,Line1,Line2,TLE)`
Mode and number of proofs:
`parse_lines(++nonvar,++atom,++atom,--compound)` - `one_or_error`

### `propagate/3`

Propagates a parsed TLE using the default `approximate` model and returns a `geographic(Latitude,Longitude,Height)` coordinate. Supported time specifications are `date_time(Year,Month,Day,Hours,Minutes,Seconds)`, `julian_date(JulianDate)`, and `offset_seconds(SecondsSinceEpoch)`.

Compilation flags:
`static`
Template:
`propagate(TLE,Time,Coordinate)`
Mode and number of proofs:
`propagate(++compound,++nonvar,--compound)` - `one_or_error`

### `propagate/4`

Propagates a parsed TLE using the default `approximate` model and returns coordinates in the requested frame. Supported frames are `eci` returning `eci(X,Y,Z)`, `ecef` returning `ecef(X,Y,Z)`, and `wgs84_3d` returning `geographic(Latitude,Longitude,Height)`.

Compilation flags:
`static`
Template:
`propagate(TLE,Time,Frame,Coordinate)`
Mode and number of proofs:
`propagate(++compound,++nonvar,++atom,--compound)` - `one_or_error`

### `propagate/5`

Propagates a parsed TLE using the requested propagation model and returns coordinates in the requested frame. Supported models are `approximate` for automatic near-earth versus deep-space dispatch, `approximate_near_earth` for the low-period approximate branch with J2 secular and short-period corrections plus low-order B* drag handling, `approximate_deep_space` for the dedicated deep-space approximate branch with resonance-aware long-period corrections, and `two_body` for the legacy Keplerian approximation.

Compilation flags:
`static`
Template:
`propagate(TLE,Time,Frame,Model,Coordinate)`
Mode and number of proofs:
`propagate(++compound,++nonvar,++atom,++atom,--compound)` - `one_or_error`

### `propagate_state/4`

Propagates a parsed TLE using the default `approximate` model and returns `state(Position,Velocity)` in the requested frame. Velocity is derived directly from the propagated orbital elements in ECI and analytically transformed to the requested frame. Supported frames are `eci` returning `state(eci(X,Y,Z), eci(VX,VY,VZ))`, `ecef` returning `state(ecef(X,Y,Z), ecef(VX,VY,VZ))`, and `wgs84_3d` returning `state(geographic(Latitude,Longitude,Height), enu(East,North,Up))`.

Compilation flags:
`static`
Template:
`propagate_state(TLE,Time,Frame,State)`
Mode and number of proofs:
`propagate_state(++compound,++nonvar,++atom,--compound)` - `one_or_error`

### `propagate_state/5`

Propagates a parsed TLE using the requested propagation model and returns `state(Position,Velocity)` in the requested frame. Velocity is derived directly from the propagated orbital elements in ECI and analytically transformed to the requested frame. Supported models are `approximate`, `approximate_near_earth`, `approximate_deep_space`, and `two_body`.

Compilation flags:
`static`
Template:
`propagate_state(TLE,Time,Frame,Model,State)`
Mode and number of proofs:
`propagate_state(++compound,++nonvar,++atom,++atom,--compound)` - `one_or_error`

### `ground_track/5`

Samples the propagated sub-satellite ground track between two UTC `date_time/6` instants separated by a positive step size in seconds using the default `approximate` model, returning `sample(DateTime, geographic(Latitude,Longitude,Height))` terms.

Compilation flags:
`static`
Template:
`ground_track(TLE,StartDateTime,EndDateTime,StepSeconds,Samples)`
Mode and number of proofs:
`ground_track(++compound,++compound,++compound,++number,--list(compound))` - `one_or_error`

### `ground_track/6`

Samples the propagated sub-satellite ground track between two UTC `date_time/6` instants separated by a positive step size in seconds using the requested propagation model. Supported models are `approximate`, `approximate_near_earth`, `approximate_deep_space`, and `two_body`.

Compilation flags:
`static`
Template:
`ground_track(TLE,StartDateTime,EndDateTime,StepSeconds,Model,Samples)`
Mode and number of proofs:
`ground_track(++compound,++compound,++compound,++number,++atom,--list(compound))` - `one_or_error`

## Protected predicates

(none)

## Private predicates

(none)

## Operators

(none)

See also

tle_orbits, crs_projections_protocol