本文整理汇总了C++中AirspaceWarning::UpdateSolution方法的典型用法代码示例。如果您正苦于以下问题:C++ AirspaceWarning::UpdateSolution方法的具体用法?C++ AirspaceWarning::UpdateSolution怎么用?C++ AirspaceWarning::UpdateSolution使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AirspaceWarning
的用法示例。
在下文中一共展示了AirspaceWarning::UpdateSolution方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Intersection
/**
* Check whether this intersection should be added to, or updated in, the warning manager
*
* @param airspace Airspace corresponding to current intersection
*/
void Intersection(const AbstractAirspace& airspace) {
if (!airspace.IsActive())
return; // ignore inactive airspaces completely
if (!warning_manager.GetConfig().IsClassEnabled(airspace.GetType()) ||
ExcludeAltitude(airspace))
return;
AirspaceWarning *warning = warning_manager.GetWarningPtr(airspace);
if (warning == NULL || warning->IsStateAccepted(warning_state)) {
AirspaceInterceptSolution solution;
if (mode_inside) {
airspace.Intercept(state, perf, solution, state.location, state.location);
} else {
solution = Intercept(airspace, state, perf);
}
if (!solution.IsValid())
return;
if (solution.elapsed_time > max_time)
return;
if (warning == NULL)
warning = warning_manager.GetNewWarningPtr(airspace);
warning->UpdateSolution(warning_state, solution);
found = true;
}
}
示例2: condition
bool
AirspaceWarningManager::UpdateInside(const AircraftState& state,
const GlidePolar &glide_polar)
{
if (!glide_polar.IsValid())
return false;
bool found = false;
AirspacePredicateAircraftInside condition(state);
Airspaces::AirspaceVector results = airspaces.FindInside(state, condition);
for (const auto &i : results) {
const AbstractAirspace &airspace = i.GetAirspace();
if (!airspace.IsActive())
continue; // ignore inactive airspaces
if (!config.IsClassEnabled(airspace.GetType()))
continue;
AirspaceWarning *warning = GetWarningPtr(airspace);
if (warning == nullptr ||
warning->IsStateAccepted(AirspaceWarning::WARNING_INSIDE)) {
GeoPoint c = airspace.ClosestPoint(state.location, GetProjection());
const AirspaceAircraftPerformance perf_glide(glide_polar);
AirspaceInterceptSolution solution;
airspace.Intercept(state, c, GetProjection(), perf_glide, solution);
if (warning == nullptr)
warning = GetNewWarningPtr(airspace);
warning->UpdateSolution(AirspaceWarning::WARNING_INSIDE, solution);
found = true;
}
}
return found;
}