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)