Skip to main content

Calculator Reference

This page documents every Calculator class available for the Bulk Propagation API.

Each calculator represents an output that can be computed in WASM. You pick only the calculators you need: less work means faster runs. Calculators have dependencies - if a calculator requires another one, both must be present in the calculators array passed to BulkPropagator.

tip

Outputs are packed in TypedArray buffers, and indices are always sorted satellite-first, date-second: index = satelliteIndex * datesCount + dateIndex.


EciBaseCalculator

Runs SGP4 propagation and produces ECI position and velocity vectors. This is the WASM equivalent of the pure JS propagate(). As the base of calculations, it must be always present.

PropertyValue
Key in the outputeci
Dependenciesnone
Run parametersnone
Formatted output{ position: EciVec3<Kilometer>, velocity: EciVec3<KilometerPerSecond>, error: SatRecError }
Raw output{ position: Float64Array, velocity: Float64Array, error: Int8Array }

Raw data layout:

  • position - [x₀, y₀, z₀, x₁, y₁, z₁, …] for each satellite/date pair
  • velocity - [vx₀, vy₀, vz₀, vx₁, vy₁, vz₁, …] for each satellite/date pair
  • error - [err₀, err₁, …] - SatRecError value for each pair

GmstCalculator

Calculates Greenwich Mean Sidereal Time, needed by coordinate-transform calculators. WASM equivalent of gstime().

PropertyValue
Key in the outputgmst
Dependenciesnone
Run parametersnone
Formatted outputGMSTime
Raw outputFloat64Array

Raw data layout: [gmst₀, gmst₁, …] - one value per date (not duplicated per satellite).


EcfPositionCalculator

ECF (Earth-Centered Fixed) position. WASM equivalent of eciToEcf() applied to position.

PropertyValue
Key in the outputecfPosition
Dependencieseci, gmst
Run parametersnone
Formatted outputEcfVec3<Kilometer>
Raw outputFloat64Array

Raw data layout: [x₀, y₀, z₀, x₁, y₁, z₁, …] for each satellite/date pair.


EcfVelocityCalculator

ECF velocity. WASM equivalent of eciToEcf() applied to velocity.

PropertyValue
Key in the outputecfVelocity
Dependencieseci, gmst
Run parametersnone
Formatted outputEcfVec3<KilometerPerSecond>
Raw outputFloat64Array

Raw data layout: [vx₀, vy₀, vz₀, vx₁, vy₁, vz₁, …] for each satellite/date pair.


GeodeticPositionCalculator

Geodetic position (latitude, longitude, height). WASM equivalent of eciToGeodetic().

PropertyValue
Key in the outputgeodeticPosition
Dependencieseci, gmst
Run parametersnone
Formatted outputGeodeticLocation object: { latitude, longitude, height }
Raw outputFloat64Array

Raw data layout: [lat₀, lon₀, h₀, lat₁, lon₁, h₁, …] for each satellite/date pair.


LookAnglesCalculator

Look Angles (azimuth, elevation, range). WASM equivalent of ecfToLookAngles().

Requires observer geodetic coordinates at run time.

PropertyValue
Key in the outputlookAngles
DependenciesecfPosition
Run parameters{ observer: GeodeticLocation } - { latitude, longitude, height } in radians and km
Formatted outputLookAngles object: { azimuth, elevation, rangeSat }
Raw outputFloat64Array

Raw data layout: [az₀, el₀, range₀, az₁, el₁, range₁, …] for each satellite/date pair.

Run-time usage:

bulkPropagator.run({
dates,
lookAngles: {
observer: {
latitude: degreesToRadians(41),
longitude: degreesToRadians(-71),
height: 0.1,
},
},
});

DopplerFactorCalculator

Doppler factor. WASM equivalent of dopplerFactor().

Requires observer ECF coordinates at run time.

PropertyValue
Key in the outputdopplerFactor
DependenciesecfPosition, ecfVelocity
Run parameters{ observer: EcfVec3<Kilometer> } - { x, y, z } in km
Formatted outputnumber
Raw outputFloat64Array

Raw data layout: [df₀, df₁, …] for each satellite/date pair.

Run-time usage:

const observerGeodetic = {
latitude: degreesToRadians(41),
longitude: degreesToRadians(-71),
height: 0.1,
};

bulkPropagator.run({
dates,
dopplerFactor: {
observer: geodeticToEcf(observerGeodetic),
},
});

SunPositionCalculator

Sun position in the equatorial ECI frame, in AU. WASM equivalent of sunPos().

PropertyValue
Key in the outputsunPosition
Dependenciesnone
Run parametersnone
Formatted outputEciVec3<AU>
Raw outputFloat64Array

Raw data layout: [x₀, y₀, z₀, x₁, y₁, z₁, …] - one vector per date (not duplicated per satellite).


ShadowFractionCalculator

Fraction of the Sun's disc obscured by the Earth. WASM equivalent of shadowFraction().

PropertyValue
Key in the outputshadowFraction
Dependencieseci, sunPosition
Run parametersnone
Formatted outputnumber - 0 = fully lit, 1 = umbra, 0–1 = penumbra
Raw outputFloat64Array

Raw data layout: [sf₀, sf₁, …] for each satellite/date pair.