Repository navigation
Conversation
The highest latitude a pattern can cover is a property of its geometry, not of the window it is swept over: the inclination has no secular rate here, so every satellite stays inside the turning latitude of its ground track for ever. `coverage_envelope` solves that bound with Brent's method on the ellipsoid and returns it with the footprint share and the closed-form mean number of satellites in view. The spherical form the README quoted, the inclination plus the Earth central angle, is not conservative on an oblate Earth. It gives 71.658 degrees for the 53 degree delta at 780 km against 72.011, and on the 2000 cell grid those two land either side of a whole collar: it calls 126 cells unreachable where 78 are, and 78 is what the 24 hour sweep measures. The figures the README and the design notes quote are corrected to the ellipsoidal ones. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
main gained a ruff format gate while this branch was open, so the branch is merged up and run through the formatter to match. Behaviour is untouched: the suite passes as before and nothing the pull request claims has moved.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The highest latitude a Walker pattern can cover is a property of its geometry rather than of the window it is swept over, because the inclination has no secular rate in this propagator.
coverage_envelopereturns that bound, solved on the ellipsoid with Brent's method, together with the footprint share and the closed-form mean number of satellites in view that follows from it. The spherical form the README quoted, the inclination plus the Earth central angle, is not conservative on an oblate Earth: it gives 71.658 degrees for the 53 degree delta at 780 km against 72.011, and on the 2000 cell grid those two land either side of a whole collar of cells, so it calls 126 cells unreachable where 78 are. 78 is what the 24 hour sweep measures, and what the new bound predicts exactly.algorithm/envelope.py:CoverageEnvelopeandcoverage_envelope, withunreachable_cellsfor a grid andreaches_the_poles. A retrograde inclination is folded onto its supplement, so 98.6 degrees reaches what 81.4 does rather than claiming the pole.tests/test_envelope.py: 76 tests. The bound collapses to the published closed form on a sphere across four altitudes, four inclinations and four masks; a ground point at the bound sees the satellite at exactly the mask; the excluded area matches a quadrature of the ellipsoidal area element; and no cell outside the envelope is ever covered by a swept trace.examples/analyse_design.py: reports the reachable latitude, the excluded area, and the cells outside the envelope, replacing the closed forms it computed inline. For delta-53 it prints 78 cells outside the envelope against 78 never covered.README.mdanddocs/design-notes.md: the 71.7 and 77.0 degree figures corrected to 72.0 and 77.3, with a paragraph and a method note on why the spherical form is not a bound.Gates: 346 tests pass, coverage 99.11 percent against the 96 percent floor,
ruff check .andmypyclean.🤖 Generated with Claude Code