diff --git a/api/lib/extrapolation.js b/api/lib/extrapolation.js index 2a55993..f8411b8 100644 --- a/api/lib/extrapolation.js +++ b/api/lib/extrapolation.js @@ -16,7 +16,8 @@ function extrapolatePosition(aircraft, targetTimestamp) { const dx = velocityMs * Math.sin(trackRad) * dt; const dy = velocityMs * Math.cos(trackRad) * dt; - const dz = (aircraft.geom_rate || 0) * 0.00508 * dt; + // geom_rate is ft/min; convert to ft/s to keep altitude in feet + const dz = (aircraft.geom_rate || 0) / 60 * dt; const latRad = aircraft.lat * Math.PI / 180; const newLat = aircraft.lat + (dy / 111320); diff --git a/api/lib/geometry.js b/api/lib/geometry.js index 6cb7033..8aea293 100644 --- a/api/lib/geometry.js +++ b/api/lib/geometry.js @@ -22,10 +22,10 @@ function calculateBistaticDelay(aircraftPos, rxPos, txPos) { let dRxAircraft = haversineDistance(rxPos, aircraftPos); let dTxAircraft = haversineDistance(txPos, aircraftPos); let dRxTx = haversineDistance(rxPos, txPos); - - const altRx = rxPos.alt || 0; - const altTx = txPos.alt || 0; - const altAircraft = aircraftPos.alt || 0; + + const altRx = rxPos.alt || 0; // meters (from config) + const altTx = txPos.alt || 0; // meters (from config) + const altAircraft = (aircraftPos.alt || 0) * 0.3048; // feet -> meters dRxAircraft = Math.sqrt(dRxAircraft**2 + (altAircraft - altRx)**2); dTxAircraft = Math.sqrt(dTxAircraft**2 + (altAircraft - altTx)**2);