diff --git a/visual_test.py b/visual_test.py index 8f64164..1388588 100644 --- a/visual_test.py +++ b/visual_test.py @@ -247,15 +247,24 @@ def main() -> None: asteroid_planet = None soi_exit_time = None - # Advance to next crossing - cross_idx += 1 - while cross_idx < len(sun_crossings): - if sun_crossings[cross_idx][0] > sim_time + 0.1: - soi_enter_time = sun_crossings[cross_idx][0] - break - cross_idx += 1 - else: - soi_enter_time = None + # ── Recompute trail from new sun orbit ────── + trail_asteroid_sun = [ + to_screen(x, y) for x, y in + generate_orbit_points(asteroid_sun) + ] + + # ── Recompute future SOI crossings ─────────── + window = SEARCH_ORBITS * max(asteroid_sun.period, PLANET.period) + sun_crossings = find_soi_crossings( + asteroid_sun, PLANET, SOI_RADIUS, + sim_time + 0.1, sim_time + window, n_steps=1000, + ) + print(f" Re-scanned: found {len(sun_crossings)} future crossing(s)") + for i, (enter, _) in enumerate(sun_crossings): + print(f" [{i}] enter={enter:.1f}s") + + cross_idx = 0 + soi_enter_time = sun_crossings[0][0] if sun_crossings else None # ── Compute current positions ────────────────────── px, py = PLANET.position_at(sim_time)