|
@@ -168,15 +168,20 @@ class Node:
|
|
|
tempWaypoint = Waypoint(longitude = inbound.CurrentPosition.longitude, latitude = inbound.CurrentPosition.latitude)
|
|
|
gs = inbound.Report.dynamics.groundSpeed * 0.514444 # ground speed in m/s
|
|
|
distance = gs * timePrediction
|
|
|
- self.PredictedCoordinate = tempWaypoint.project(course, distance)
|
|
|
+ prediction = tempWaypoint.project(course, distance)
|
|
|
|
|
|
# calculate the bearing between the current position and the IAF
|
|
|
star = Node.findArrivalRoute(inbound.Report.initialApproachFix, sequencingConfig.ActiveArrivalRunways[0].Runway, navData)
|
|
|
|
|
|
# calculate the distance based on the flown distance and update the predicted distance
|
|
|
- self.PredictedDistanceToIAF = Waypoint(longitude = self.PredictedCoordinate[1], latitude = self.PredictedCoordinate[0]).haversine(star.Route[0])
|
|
|
- if 0.0 > self.PredictedDistanceToIAF:
|
|
|
- self.PredictedDistanceToIAF = 0.0
|
|
|
+ if None != star:
|
|
|
+ bearing = Waypoint(longitude = prediction[1], latitude = prediction[0]).bearing(star.Route[0])
|
|
|
+ correctedDistance = math.cos(abs(bearing - course)) * distance * 0.000539957
|
|
|
+ self.PredictedDistanceToIAF -= correctedDistance
|
|
|
+ if 0.0 > self.PredictedDistanceToIAF:
|
|
|
+ self.PredictedDistanceToIAF = 0.0
|
|
|
+
|
|
|
+ self.PredictedCoordinate = prediction
|
|
|
|
|
|
# calculate the timings for the different arrival runways
|
|
|
for identifier in sequencingConfig.ActiveArrivalRunways:
|