A non-terrestrial network cannot pick a serving satellite the way a terrestrial network picks a cell. The satellite moves, the Earth turns under it, and a satellite that is overhead now will be below the horizon in a few minutes. Deciding which satellite serves a UE is therefore a question about geometry over a time window, not a question about one instant.
This simulator takes a Walker constellation, a UE position, a gateway position and a time window, and works out which satellites can serve the UE at every instant in that window. It then builds the handover chain across the window and reports what is left over: the number of switches, the satellites involved, and any coverage gap.
Sections
- Mathematical Foundation
- Constellation and Orbit Model
- Visibility and the Elevation Mask
- Pass Duration
- Worked Example: 550 km
- Comparison Across Altitudes
- The Feeder Link Constraint
- Building the Handover Chain
- Real Elements versus Synthetic
- Refreshing the Elements
- Why the Large Groups Take Longer
- What is TLE ?
- How to Convert Ephmeris into TLE ?
- Simulation
- Usage
- Reading the Panels
- At the Current Instant
- Across the Whole Window
- Parameters
- Key Concepts
- Limitations
Mathematical Foundation
Everything here follows from one question asked repeatedly: at time t, is the satellite high enough above the horizon at the ground point? The answer is an angle, and the angle comes from two position vectors.
Here d is the line-of-sight vector from the ground point to the satellite and u is the local vertical. On a spherical Earth the local vertical is simply the site position normalised, which is why the expression stays this short. The slant range is |d|, and the one-way propagation delay is |d| / c.
A link is declared usable when the elevation clears a configured mask:
The mask is not decoration. It stands in for everything the geometry alone does not model: atmospheric loss at grazing angles, terrain and building blockage near the horizon, and the regulatory minimum elevation a system is licensed to operate at. Typical NTN values sit between 10° and 30°.
Constellation and Orbit Model
The constellation is a Walker Delta pattern, written i : T/P/F. It is described by an inclination, a number of orbital planes, a number of satellites per plane, and a phasing factor that offsets one plane from the next.
The planes are spread evenly in right ascension, and the satellites are spread evenly around each plane:
u0,ps = 2π · s / S + 2π · F · p / (P · S)
For a circular orbit the argument of latitude advances at the mean motion, so the position at any time follows directly:
y = r · ( cos u · sin Ω + sin u · cos i · cos Ω )
z = r · sin u · sin i
The ground points rotate with the Earth, so their longitude advances at ωE = 7.2921 × 10-5 rad/s. Both the satellite and the ground point are expressed in the same inertial frame before the elevation is taken.
F. Set the Sparse preset and sweep Phasing F from 0 upward: the coverage percentage and the longest gap both move, while nothing else changes.Visibility and the Elevation Mask
A satellite is visible from a ground point over a circular region called the footprint. Its size is set by the altitude and the elevation mask, and it is usually quoted as an Earth-central half angle.
η = arcsin( sin ρ · cos elmin )
λ = 90° − elmin − η
The angle ρ is the angular radius of the Earth as seen from the satellite, η is the nadir angle to the edge of the coverage circle, and λ is the half angle of the footprint measured from the centre of the Earth. The simulator draws exactly this circle around the sub-satellite point of the serving satellite.
Raising the mask shrinks the footprint quickly. At 550 km, moving the mask from 10° to 30° takes λ from about 14.9° to about 7.4°, which cuts the covered area to roughly a quarter.
Pass Duration
The footprint half angle sets how long one satellite stays usable. In the time it takes the satellite to travel 2λ of arc, the ground point crosses the footprint from edge to edge.
This is the best case, an overhead pass through the centre of the footprint. Any pass that clips the edge is shorter, often much shorter.
Worked Example: 550 km, 10° Mask
Quantity | Value |
|---|---|
Orbit radius | 6 921 km |
Orbital period | 5 730 s (95.5 min) |
Earth angular radius | 67.0° |
Nadir angle | 65.1° |
Footprint half angle | 14.9° |
Maximum pass duration | ≈ 476 s (7.9 min) |
Comparison Across Altitudes
Altitude | Period | λ at 10° | Max pass |
|---|---|---|---|
550 km | 95.5 min | 14.9° | ≈ 476 s |
780 km | 100.4 min | 18.0° | ≈ 602 s |
1 200 km | 109.3 min | 24.1° | ≈ 876 s |
8 000 km | 287 min | 49.0° | ≈ 4 690 s |
Every LEO row is below 1000 s. Handover in LEO NTN is not an edge case to be tested occasionally; it is the normal mode of operation, and a session of any useful length crosses several satellites.
MAX PASS readout is labelled as a calculated value for that reason.The Feeder Link Constraint
A satellite being visible to the UE is not enough. In a transparent payload the satellite is a bent pipe: it repeats the signal without decoding it, so it has to see the gateway and the UE at the same moment. Two independent visibility conditions have to hold together.
With a regenerative payload the satellite terminates the radio protocol on board and reaches the ground network over inter-satellite links, so only the service link condition applies. The simulator carries both modes, and switching between them on the same geometry is the fastest way to see what the feeder link costs.
Sync UE/GW site, leave the UE in Munich and set GW site to Madrid, then watch the visibility chart. Several satellites are drawn in a dull grey-blue: those clear the UE mask but not the gateway mask, so a transparent payload cannot use them. Switch the payload to regenerative and those same bars turn into usable colour.Building the Handover Chain
Once the usable set is known at every sample, the serving satellite still has to be chosen. The simulator uses a simple and defensible rule: keep the current satellite while it stays usable, and when it stops being usable, take the usable satellite with the longest run of usability ahead of it.
That rule minimises the number of switches for a given geometry, which makes it a useful baseline. A real scheduler would also weigh elevation, load, beam layout and the timing of the conditional handover configuration it has already sent to the UE, so the chain here is a lower bound on switching rather than a prediction of it.
Three outcomes are counted separately, and the distinction matters when reading the results:
Event | Meaning |
|---|---|
Handover | The serving satellite becomes unusable and another one is already usable. Service continues. |
Re-acquisition | Service resumes after a gap. The UE had nothing to camp on in between. |
Outage | No satellite satisfies the usable condition. Drawn as a red band on the serving ribbon and shaded on the elevation plot. |
Real Elements versus Synthetic
The constellation dropdown holds two kinds of entry, and they answer different questions. The synthetic Walker patterns are generated from four numbers, so every parameter is yours to move. The entries marked REAL are snapshots of published two-line elements, propagated with SGP4, so nothing is yours to move and the satellites are where they actually were.
Group | Satellites | Median altitude | Period | Completeness |
|---|---|---|---|---|
Iridium NEXT | 80 | 778 km | 100.4 min | whole group |
OneWeb | 651 | 1 202 km | 109.5 min | whole group |
Starlink 53° shell | 4 360 | 463 km | 93.8 min | one shell of a larger fleet |
Amazon Leo / Project Kuiper | 391 | 630 km | 97.3 min | available group TLEs |
Guowang | 181 | 1 149 km | 108.3 min | available group TLEs |
Qianfan / Thousand Sails / G60 | 238 | 1 068 km | 106.6 min | available group TLEs |
Globalstar | 28 | 1 414 km | 114.1 min | available group TLEs |
ORBCOMM | 14 | 697 km | 98.7 min | available group TLEs |
O3b / O3b mPOWER | 30 | 8 066 km | 287.9 min | O3B-named entries in SES TLEs |
GPS operational | 32 | 20 182 km | 718.0 min | whole group |
Galileo | 32 | 23 222 km | 844.7 min | whole group |
Altitude and period are not configured anywhere. They are derived from the mean motion in the elements themselves, which is why they can be read as a check that the propagation is behaving.
Those derived numbers are worth a moment. Nothing in the simulator is told that GPS orbits at 20 200 km or that its period is half a sidereal day. Both fall out of the two-line elements, and both land on the published values. The same is true of the 100 minute Iridium period and the 1 200 km OneWeb shell.
EPOCH cell in the readout shows the snapshot date so the age is always visible.Refreshing the Elements
The files that ship with the page are a frozen download. The Update TLE button replaces them at runtime with the current set, so the ageing problem above can be removed whenever it matters.
The request goes straight from the browser to Celestrak. That works because their server answers a cross-origin request with Access-Control-Allow-Origin: *, so no proxy sits in the path and nothing has to be configured on the ShareTechnote side. Two consequences follow. The download depends on Celestrak being reachable from wherever the page is open, and it is a courtesy to press the button when the data actually matters rather than on every visit.
SOURCE cell distinguishes (live) from (snapshot) at all times.Two presets filter the downloaded catalogue. Starlink keeps only the 53° shell between 430 and 500 km, matching the vendored file. O3b / O3b mPOWER keeps satellites whose names begin with O3B from the SES group, excluding unrelated SES satellites. The status line shows the retained and downloaded counts when filtering removes entries.
The dropdown also includes Amazon Leo (formerly Project Kuiper), Guowang, Qianfan (Thousand Sails / G60), Globalstar and ORBCOMM. Together with O3b / O3b mPOWER, these presets use bundled snapshots retrieved on 24 October 2026 from CelesTrak. Amazon Leo uses its kuiper group and Guowang uses hulianwang. Each preset supports the same coverage analysis, live TLE refresh and TLE downloads as the existing real presets.
These are the satellites available in each source's TLE set, not a model of the planned fleet or a count of satellites offering service. CelesTrak reports that newly catalogued objects with six-digit IDs cannot be supplied in TLE format. Those objects are absent from these presets and from their TLE refreshes, so deployment coverage can be understated. The loaded count and epoch are shown in the simulator.
Two more differences are worth knowing before comparing a real group against a synthetic one.
Aspect | Synthetic Walker | Real elements |
|---|---|---|
Propagator | Closed-form circular Kepler | SGP4, including drag and J2 |
Earth model for elevation | Sphere, 6 371 km | WGS84 ellipsoid |
Epoch | Arbitrary, starts at zero | The snapshot date |
Orbits | Exactly circular, one altitude | Slightly eccentric, spread in altitude |
Sliders | All active | Constellation sliders disabled |
Sync UE/GW site, and put the UE in Munich with the gateway in Madrid. Coverage is well under 100 %, because a 66 satellite constellation at a 10° mask cannot keep one satellite in view of two separated ground points continuously. Now switch the payload to regenerative. The gaps shrink sharply, which is the geometric reason Iridium was built with inter-satellite links in the first place.Why the large groups take longer
Testing 4 360 satellites at every sample would mean propagating over eight hundred thousand positions for one window. Almost all of that work is wasted, because only a few hundred satellites ever rise above the horizon.
The simulator therefore screens first. It sweeps the window at a coarse step and keeps any satellite whose sub-satellite point comes within the footprint, widened by the angle a satellite can travel between two coarse samples:
The margin is what makes the shortcut safe. A satellite cannot cross the footprint between two coarse samples without being caught, because the test already allows for the furthest it could have moved. Only the survivors are propagated at full resolution.
Two further shortcuts are worth knowing, because both are things you can feel while using the controls.
The first is that the candidate set is cached. It depends on the constellation, the UE position, the UE mask and the time window, and on nothing else. Moving the gateway, changing the feeder mask or switching the payload mode therefore reuses it and only the cheap pass runs again. On the largest shell that is the difference between roughly 150 ms and roughly 65 ms per change. Moving the UE or resizing the window invalidates the cache, so those two controls are the slow ones.
The second is that dragging a slider does not recompute on every pixel. The analysis is deferred by a few tens of milliseconds after the last movement, while the value labels keep updating immediately. A slow drag therefore feels continuous, and a fast drag across the full range costs one analysis rather than several hundred.
What is TLE ?
To calculate a coverage window, we need to know where each satellite will be as time advances. A Two-Line Element set, or TLE, provides a compact description of an orbit at a reference time. A propagator uses those elements to calculate satellite position and velocity at other times.
The two data lines each contain 69 characters. Their column positions are fixed, so spaces are part of the format. A file often includes a satellite-name line before the two data lines. That is why a downloaded record can occupy three lines even though it is called a two-line element set. The name helps the reader identify the satellite; the orbital calculation uses the numbered lines.
Line 1 holds the satellite identity, epoch, drag-related fields and bookkeeping information. Line 2 holds the orbital elements. The following table groups the fields by their role in the calculation. The exact column layout is given in the CelesTrak TLE format reference.
Field | Meaning |
|---|---|
Satellite number | Identity repeated on both lines. The two values must match. |
Epoch | Reference year and day of year, including a fractional day. |
Inclination, i | Orbital-plane tilt relative to the equator, in degrees. |
RAAN, Ω | Direction of the ascending node, in degrees. It sets the orbital plane's orientation around the Earth. |
Eccentricity, e | Orbit shape, written with an implied decimal point. |
Argument of perigee, ω | Direction of perigee within the orbital plane, in degrees. |
Mean anomaly, M | Orbital phase at the epoch, in degrees. |
Mean motion, n | Orbital rate in revolutions per day. |
B* | Drag parameter used by SGP4. |
Checksum | Final digit on each data line, used to detect some text errors. |
For example, an epoch of 26296.50000000 means day 296 of 2026 at 12:00 UTC. An eccentricity field of 0002400 means 0.0002400. A compact exponent field such as 12345-4 represents 0.12345 × 10-4. These fields need a TLE-aware parser; splitting the line at spaces is not enough.
The checksum adds the digits in the first 68 columns, counts each minus sign as one, and takes the result modulo 10. Other characters contribute zero. A correct checksum confirms this simple text check only. It says nothing about whether the orbit matches a real satellite. The legacy two-digit epoch year also has a convention: 57–99 means 1957–1999, and 00–56 means 2000–2056. See the TLE format FAQ for the encoding rules.
Why does the propagation model matter ?
The orbital angles look like ordinary Keplerian elements, but a published TLE contains mean elements associated with SGP4. The model and the parameters belong together. Substituting those numbers into a different propagator can change the resulting trajectory.
SGP4 reconstructs orbital motion from these mean elements with its perturbation model. An instantaneous position and velocity instead describe an osculating state: the local orbit that matches that instant. Copying its Keplerian elements directly into a TLE does not perform the averaging and fitting needed by SGP4. CelesTrak explains this relationship in its SGP4 software tutorial.
In this simulator, a REAL preset propagates the loaded TLEs with SGP4. Its download preserves the source lines. A synthetic preset calculates a circular Walker constellation and generates approximate TLEs from that geometry. The generated name begins with SYNTHETIC, and its catalog number is a placeholder. A valid file format does not turn that fictional satellite into a catalogued object.
The export scope also matters. Download Serving TLE includes the distinct satellites chosen by the handover chain. Download Constellation TLE includes the whole selected constellation or shell. Neither file records the UE position, elevation mask, gateway constraint or handover schedule. Those conditions belong to the coverage calculation, so keep them with the results when reproducing an analysis.
How to Convert Ephmeris into TLE ?
The conversion depends on what the input contains and what accuracy we need. For a designed circular constellation, we can generate approximate elements from the orbit parameters. For an ephemeris containing positions and velocities over time, we should fit an SGP4 trajectory to those samples.
Generating a TLE from the selected Walker parameters
The synthetic mode already knows the orbital radius, inclination, plane orientation and phase of every satellite. It can therefore construct an approximate TLE without importing position samples. This is the direct element-export approach also used in the Ephemeris simulator.
For altitude h, the circular model uses the following relationships. Here RE is 6 371 km and μ is 398 600.4418 km3/s2, matching this simulator. Keep the units consistent: nrad is in radians per second, while the TLE field uses revolutions per day.
nrad = √(μ / a3)
nTLE = nrad · 86400 / (2π)
Let p be the plane index and s the satellite index within the plane, both starting at zero. For P planes, S satellites per plane and phasing factor F, the model assigns:
up,s(0) = 2πs / S + 2πFp / (PS)
M(tstart) = up,s(0) + nradtstart (mod 2π)
The exporter sets e = 0 and ω = 0, so M carries the circular orbit's phase. Perigee has no unique direction for a circle; choosing zero is a convention. Inclination comes from the control panel. The exporter also sets B* and the mean-motion derivative fields to zero, uses placeholder identities, and calculates the two checksums.
For the default 550 km altitude, a is 6 921 km. The two-body equations give a period of approximately 5 730 seconds and a mean motion of approximately 15.078 revolutions per day. These are useful checks on the generated line 2. A value near one revolution per day would describe a very different orbit.
The UTC reference needs another step. The Walker model starts with an arbitrary Earth angle and rotates the Earth by ωEt. The export assigns page-load UTC as its time origin and places the TLE epoch at the window start. It then rotates the plane orientation to account for Greenwich sidereal time, GST, at that epoch:
This adjustment aligns the idealized ground longitude at the export epoch. It does not fit SGP4 mean elements or reproduce every SGP4 perturbation. Changing the file epoch alone would be incorrect because the orbital phase and Earth orientation must remain consistent with the chosen time.
Fitting a TLE to an ephemeris
An ephemeris normally supplies a sequence of time-tagged states. A useful conversion must make the propagated TLE follow that sequence over the interval of interest, rather than merely resemble one state at the starting instant.
Begin with the timestamps, units and reference frame. SGP4 returns states in TEME, so transform the reference states consistently before comparing them. An Earth-fixed velocity also needs the rotational contribution when transformed; rotating the position and velocity by the same matrix alone is insufficient. An implementation example is documented in SatelliteToolboxPropagators SGP4 fitting.
A practical fitting sequence is:
- Choose a fitting interval and an epoch within it. Collect reference positions and, when available, velocities across that interval.
- Build an initial element estimate. For a bound two-body state, the energy relation gives a starting semi-major axis:
1/a = 2/|r| − |v|2/μ. Treat the resulting osculating elements as an initial guess. - Propagate the candidate mean elements with SGP4 at every reference timestamp.
- Adjust the elements to reduce the state residuals. Estimate B* only when the fitting arc contains enough information to constrain it; a single state cannot determine drag reliably.
- Format the fitted elements as a TLE, parse the rounded text again, and validate the propagated result at additional times.
One possible weighted least-squares objective is shown below. The vector q contains the fitted parameters, and σr and σv set the position and velocity scales. They prevent quantities with different units from being added without normalization. A position-only fit omits the velocity term.
+ |vSGP4(tk; q) − vref(tk)|2 / σv2 ]
For coverage work, validate elevation and handover timing as well as position error. A small position change near the elevation mask can change when a satellite becomes usable. Propagate the exported file over the requested interval, reapply the UE and gateway conditions, and check transitions with finer time steps. Report the fitting interval and residuals with the file.
Simulation
The interactive simulator is below. Pick a constellation, then a place for the UE and a place for the gateway, then run the animation and watch the serving ribbon on the visibility chart. The controls underneath let you change the constellation, move either ground point, raise or lower each elevation mask, and stretch the window.
For REAL constellations, an optional UTC date/time overrides the Start time offset. Clear it to use the epoch offset.
Ground tracks, footprint of the serving satellite, UE and gateway
Equirectangular projection, so longitude and latitude map straight onto x and y. Bright dots are satellites that reach the UE at some point in the window; dim dots are the rest of the constellation. The green ring is the serving footprint at the current instant, drawn as an ellipse because the projection stretches east-west away from the equator. Green dashes are the service link, amber dashes the feeder link. Coastline: Natural Earth 1:110m, public domain.
Current values and window summary
Visibility windows and the serving chain
One row per satellite that reaches the UE. Coloured bars are usable; grey-blue bars clear the UE mask but fail the gateway mask. The strip at the bottom is the serving chain, with a white tick at every handover and red where no satellite is usable.
Elevation at the UE
Faint curves are all candidate satellites. The heavy curve follows the serving chain and changes colour at each handover. The dashed line is the UE elevation mask.
Handover chain
TLEs for all satellites in the serving chain
Serving TLE includes the satellites in the serving chain; Constellation TLE includes every satellite in the selected constellation or shell. Check Consolidated File for one .tle file, or uncheck it for separate files named after each satellite. Your browser may ask you to allow multiple downloads.
| Satellite | Serving samples (from window start) | TLE lines (source / generated) |
|---|
Every distinct satellite used by the handover chain is listed once, including satellites used before or after a gap. The download contains each satellite name and its two element lines. REAL presets retain the original source lines; synthetic presets generate approximate TLEs from the selected altitude, inclination, plane spacing and phasing, with zero eccentricity and drag. Synthetic catalog IDs are placeholders, and their epoch is page-load UTC plus the Start time offset. Serving ranges show the first and last sampled instants, not exact rise/set times. Sampled geometric visibility is not a guarantee of continuous coverage or operational service; gaps between samples, element age, manoeuvres and unmodelled link constraints can affect coverage.
Usage
To export a real coverage set, select a REAL constellation such as OneWeb, choose the UE and gateway locations, set Start UTC and the Window duration in seconds, then inspect the final TLE panel. Use Update TLE for fresh elements. The download includes all distinct serving satellites, even when the result has gaps, so check the coverage status before using it. A blank UTC field uses the existing epoch offset. Synthetic presets also support TLE export, using generated approximate elements as in the Ephemeris simulator. Their SGP4 trajectories can differ from the circular Walker model used for the coverage results.
- Start with the defaults. A dense 550 km shell, both ground points in Munich, a 1000 s window.
Sync UE/GW siteis on, so the gateway sits with the UE and the feeder link costs nothing. Read theHANDOVERScell: it will not be zero, and the pass-duration table above explains why. - Separate the two ends. Untick
Sync UE/GW siteand moveGW siteto Madrid, then to Seoul. The first move barely changes anything; the second collapses coverage, because no satellite can see Munich and Seoul at the same moment. - Run the animation. Run / Stop toggles it. Step Fwd and Step Bwd stop the animation first and then move by one time step, so you can walk through a handover instant by instant.
- Watch the serving ribbon. On the visibility chart the bottom strip shows which satellite is serving. Every white tick is a handover. Every red band is an outage.
- Break the coverage. Switch the constellation preset to Sparse LEO. The coverage percentage drops below 100, red bands appear, and the
LONGEST GAPcell turns red. - Isolate the feeder link. Keep the sparse constellation and switch the payload to regenerative. Coverage improves immediately, because the gateway condition is dropped. Switch back and the gaps return.
- Raise the mask. Push
Mask UEfrom 10° to 30°. The bars on the visibility chart shorten from both ends, handovers become more frequent, and the elevation curves are clipped higher up. - Move the UE north. Drag
UE lattowards 70° with the 53° inclined shell selected. Coverage collapses, because an inclined constellation never puts a satellite overhead at high latitude. Switch to the polar preset and it recovers. - Change the epoch.
Start timeslides the window through the constellation cycle. The same geometry can give a very different handover count at a different start time, which is why a single window is a sample and not a guarantee. - Switch to real elements. Pick any entry marked
REALin the constellation dropdown. The elements are fetched on demand, the constellation sliders grey out, and theSOURCEandEPOCHcells change to show that SGP4 is now driving the positions. - Refresh the elements. Press
Update TLEto download the current set from Celestrak. The status line beside the button reports the epoch and the satellite count, and turns green once the data is live rather than the vendored snapshot. Nothing is lost if the download fails. - Compare a real group against its synthetic twin. REAL: OneWeb against the synthetic LEO 1200 km preset is the cleanest pair. The pass durations agree closely, which is the check that the synthetic model is sound; the handover instants do not, because the real planes are not evenly spaced and the real epoch is a real moment.
Reading the Panels
The summary panel carries fifteen cells. Five of them describe the instant the cursor is on and change as the animation runs; the rest describe the window as a whole and only change when a control does.
At the current instant
Cell | Meaning |
|---|---|
| Seconds from the start of the window. This is the position of the white cursor on both the visibility chart and the elevation plot. |
| The satellite currently carrying the link, or |
| Elevation of that satellite above the UE horizon. It can never be below the UE mask, or the satellite would not be serving. |
| The same angle at the gateway. Shows |
| Straight-line distance from UE to serving satellite. It varies by a factor of two or more across a single LEO pass, which is why NTN timing advance has to track it continuously. |
| Slant range divided by the speed of light. Propagation only, with no processing or scheduling delay. Double it for a round trip. |
Across the whole window
Cell | Meaning |
|---|---|
| Fraction of samples with at least one usable satellite. Green at 100 %, amber above 95 %, red below. |
| Switches from one usable satellite to another. Service continues across each one. |
| Locks that follow an outage rather than another satellite. The very first lock of the window counts as neither this nor a handover. |
| Distinct satellites in the chain, against the number that rose above the UE mask at any point. |
| Longest continuous outage in the window, or |
| Best-case pass duration from the closed form in Pass Duration. It is calculated, not measured, and it ignores Earth rotation. |
|
|
| Satellites propagated at full resolution, against the size of the constellation. For a small group these are equal; for a large shell the first number is much smaller, and the difference is the screening described above. |
| Date the elements refer to. |
SATS USED and SCANNED cells always count the full set, so the cap never hides anything from the numbers.Parameters
The controls below define the scenario used to calculate visibility and the serving chain. Location, orbit and timing choices affect the result; animation speed and the basemap only affect how that result is displayed.
Control | Range | Effect |
|---|---|---|
| 6 synthetic + 11 real | A synthetic entry sets altitude, inclination, planes, satellites per plane and phasing together. A |
| 57 places | Moves the UE latitude and longitude to a named place. Dragging either UE slider afterwards switches the box to |
| 57 places | The same list, applied to the gateway. The list is grouped by region and spans 78°N to 78°S, which is wide enough to drive a constellation past its inclination limit. |
| on / off, default on | While ticked, the two ground points are held at the same place: changing either dropdown moves both, and dragging either latitude or longitude slider moves both. Untick it to separate them, which is what makes the feeder link constraint visible. |
| transparent / regenerative | Transparent requires the feeder link as well as the service link. Regenerative requires only the service link. |
| button | Re-downloads the selected real constellation from Celestrak and re-runs the analysis. Disabled for the synthetic presets. If the download fails, the vendored snapshot already in memory is kept and the status line says so. |
| coastline / grid | Draws the Natural Earth land outline behind the tracks, or leaves a plain graticule. Display only; it does not affect any computed value. |
| 300 – 36 000 km | Sets the orbital period and the footprint size, so it drives pass duration directly. |
| 0 – 90° | Highest latitude the ground track reaches. A UE above this latitude sees satellites only at low elevation. |
| 1 – 24 | Number of orbital planes spread evenly in right ascension. |
| 1 – 40 | Satellites spread evenly around each plane. Total size is P × this. |
| 0 – 23 | Walker phasing factor. Offsets the satellites of one plane relative to the next. |
| ±85° / ±180°, 0.1° step | Service link ground point. Moving either one sets |
| ±85° / ±180°, 0.1° step | Feeder link ground point, ignored in regenerative mode. Moving either one sets |
| 0 – 40° | Minimum elevation for each link. Raising it shrinks the footprint and shortens every pass. |
| 300 – 7 200 s | Length of the analysis window. All metrics are computed over this span. |
| 0 – 180 min | Offset of the window from the constellation epoch. |
| 2 – 60 s | Sampling interval. Finer steps resolve short passes and brief gaps more accurately at some computation cost. |
| 10 – 600× | Simulated seconds per real second during animation. |
Key Concepts
The coverage result follows from several geometric constraints acting together. Keep the window length, elevation masks and payload mode in view when comparing presets, because a larger satellite count alone does not explain every change.
- Coverage is a window question. Asking which satellite serves a UE at one instant is close to meaningless in LEO. The useful answer is an ordered chain with switch times.
- A transparent payload needs two visibilities at once. The satellite count that matters is not how many see the UE, but how many see the UE and the gateway together.
- Pass duration falls out of geometry alone. Altitude and elevation mask fix it. No amount of extra satellites makes an individual pass longer.
- More satellites reduce gaps, not switches. A denser shell removes outages, but each satellite still sets on schedule, so the handover rate stays roughly constant.
- Inclination caps useful latitude. The highest latitude a shell can reach is
i + λ. A 53° shell at 550 km with a 10° mask stops at about 68°, so a UE at 70°N sees nothing at all however many satellites are launched.
Limitations
The simulator checks a simplified set of conditions to make constellation behavior visible. Use the following assumptions when interpreting a coverage percentage or an exported TLE set, especially when comparing synthetic results with an external propagator.
- The synthetic mode uses circular Keplerian orbits only. No J2 nodal regression, no drag, no eccentricity, no manoeuvres. Over a window of an hour or two the error is small; over days the plane geometry would drift noticeably. The real-element mode does not share this limitation, because SGP4 carries drag and the dominant J2 terms.
- Real elements start as a frozen snapshot. The vendored files were downloaded once, and their accuracy is roughly a kilometre near the epoch, degrading with age.
Update TLEreplaces them with the current set, but only while the page is open: the download is never written back to the server, so a reload returns to the snapshot. - Only one Starlink shell is included. The published catalogue runs to more than ten thousand satellites across several shells. The 53° shell between 430 and 500 km is vendored complete; the 43°, 70° and 97° shells are not present, so coverage from this preset is lower than the real fleet would give.
- Spherical Earth in the synthetic mode. Radius 6 371 km, so geodetic and geocentric latitude are treated as the same, and elevation angles differ from the true ones by up to about 0.2°. The real-element mode resolves look angles against the WGS84 ellipsoid instead.
- Geometric visibility only. The elevation mask is the entire propagation model. There is no link budget, no antenna pattern, no rain fade, no terrain, no atmospheric refraction, and no interference.
- No beam structure. A real satellite serves through many spot beams, and beam-to-beam handover happens far more often than satellite-to-satellite handover. Only the latter is modelled here.
- Idealised Walker pattern. Real constellations use several shells with different altitudes and inclinations, and their true positions come from TLE or ephemeris data rather than from a closed-form pattern.
- The switching rule is a baseline. Longest-remaining-usability minimises switches for the given geometry. A real scheduler weighs load, beam layout, elevation margin and the conditional handover configuration already sent to the UE.
- The map is equirectangular, not a globe. Coastlines come from the Natural Earth 1:110m land vector, simplified to about 3 500 points. The projection stretches distance east-west with latitude, so a circular footprint is drawn as an ellipse and a great-circle ground track appears as a sine-like curve. Neither is a modelling error, only a projection artefact.
- MAX PASS is an inertial-frame estimate. It ignores Earth rotation, so it is a few percent optimistic in LEO and not meaningful at geostationary altitude.