bool AbstractAirspace::Intercept(const AircraftState &state, const GeoPoint &end, const FlatProjection &projection, const AirspaceAircraftPerformance &perf, AirspaceInterceptSolution &solution) const { AirspaceIntersectionVector vis = Intersects(state.location, end, projection); if (vis.empty()) return false; AirspaceInterceptSolution this_solution = AirspaceInterceptSolution::Invalid(); for (const auto &i : vis) Intercept(state, perf, this_solution, i.first, i.second); if (!this_solution.IsValid()) return false; solution = this_solution; return true; }
bool AbstractAirspace::intercept(const AIRCRAFT_STATE &state, const GeoVector& vec, const AirspaceAircraftPerformance& perf, AirspaceInterceptSolution &solution) const { AirspaceIntersectionVector vis = intersects(state.Location, vec); if (vis.empty()) { return false; } AirspaceInterceptSolution this_solution; for (AirspaceIntersectionVector::const_iterator it = vis.begin(); it != vis.end(); ++it) { intercept(state, perf, this_solution, it->first, it->second); } if (this_solution.valid()) { solution = this_solution; return true; } else { return false; } }