From 017b178f2ee04ee6ca14d7ab5853c23c7506d7a3 Mon Sep 17 00:00:00 2001 From: atsunatsu Date: Mon, 3 Aug 2026 03:15:39 +0800 Subject: [PATCH] fix: use refineEdge with exact station position to get correct AOS/LOS boundaries --- .../rtbishop/look4sat/feature/mutual/MutualViewModel.kt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/feature/mutual/src/main/java/com/rtbishop/look4sat/feature/mutual/MutualViewModel.kt b/feature/mutual/src/main/java/com/rtbishop/look4sat/feature/mutual/MutualViewModel.kt index 4fbab712..404bb358 100644 --- a/feature/mutual/src/main/java/com/rtbishop/look4sat/feature/mutual/MutualViewModel.kt +++ b/feature/mutual/src/main/java/com/rtbishop/look4sat/feature/mutual/MutualViewModel.kt @@ -259,10 +259,11 @@ class MutualViewModel( if (pass.orbitalObject.data.meanmo < 1e-8) continue val sat = pass.orbitalObject - // Use the pass AOS/LOS directly (same algorithm as Passes page — getLeoPass). - // No refineEdge needed; the pass list already has precise times. - val refinedAos = pass.aosTime - val refinedLos = pass.losTime + // Refine the AOS/LOS to the actual posA/posB (0° horizon). + // This ensures the elevation curve starts from ~0°. + val refinedAos = refineEdge(sat, posA, posB, pass.aosTime, 1_000L, goingUp = true) + val refinedLos = refineEdge(sat, posA, posB, pass.losTime, 1_000L, goingUp = false) + if (refinedLos <= refinedAos) continue val samples = mutableListOf>>() val tracks = mutableListOf()