def withinArrivalZone(flightParams, state): #(flightParams : FlightParameters) (state : FlightState) = airport = flightParams.DestinationAirport arrivalAltitude = airport.ArrivalAltitude arrivalDistance = airport.ArrivalDistance position = state.AircraftPosition altitude = Spatial.positionToAltitude(position) distance = Spatial.calculateDistance(Spatial.positionToLocation(position), Spatial.positionToLocation(airport.Position)) result = altitude <= arrivalAltitude and distance <= arrivalDistance return result
def detect3DCollision(lineSegment, altitude, polyhedron): # (lineSegment:LineSegment) (altitude:float<Feet>) (polyhedron:Polyhedron) = # // Check bound values # assertGreaterEqualTo "altitude" (float altitude) "0.0" 0.0 # assertGreaterEqualTo "Zone LowerBound" (float polyhedron.LowerBound) "0.0" 0.0 # assertGreaterThan "Zone UpperBound" (float polyhedron.UpperBound) "LowerBound" (float polyhedron.LowerBound) segmentMidPoint = Spatial.calculateMidpoint(lineSegment) #// Check upper/lower bounds and then 2d collision detection return polyhedron.LowerBound < altitude and altitude < polyhedron.UpperBound \ and Spatial.calculateDistance(segmentMidPoint, polyhedron.Polygon[0]) < 600.0 \ and detect2DCollision(lineSegment, polyhedron.Polygon)
def calculateTimeFuelDistance(model, altitude, weight): # (model:DescentModel) (altitude:float<Feet>) (weight:float<Pounds>) = time = calculateTime(model, altitude) fuel = calculateFuel(model, altitude) distance = Spatial.calculateDistance(model, altitude, weight) return (time,fuel,distance)