Commit 9971f4c
committed
fix: prevent sunrise/sunset times being identical when Phase 3 convergence ends below threshold
The findSunRiseSet algorithm's Phase 3 converges on the sunrise elevation
using a symmetric stepping approach. Due to the convergence step size,
the final elevation can land slightly below the -0.8333° threshold (e.g.
-0.838° instead of -0.8333°). When this happens, Phase 4's while-loop
condition (sunPos.elevation > -threshold) evaluates to false immediately,
causing it to skip entirely. Phase 5 then converges to the same point,
producing identical sunrise and sunset times.
The fix adds a small offset (daynum = sunrise + 0.001, ~1.4 minutes) at
the start of Phase 4, ensuring the sun is clearly above the threshold
before the sunset search begins. This is a deterministic fix — the bug
was reproducible 100% of the time for any location where the convergence
lands below threshold (e.g. equator at equinox).
Fixes: sunrise/sunset showing identical times (~30% of location/date combinations)1 parent 7cdc295 commit 9971f4c
2 files changed
Lines changed: 85 additions & 2 deletions
File tree
- core/domain/src
- main/java/com/rtbishop/look4sat/core/domain/predict
- test/java/com/rtbishop/look4sat/core/domain/predict
Lines changed: 6 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
424 | 424 | | |
425 | 425 | | |
426 | 426 | | |
427 | | - | |
428 | | - | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
429 | 433 | | |
430 | 434 | | |
431 | 435 | | |
| |||
Lines changed: 79 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
0 commit comments