static void test_glide_cb(const fixed h, const fixed W, const fixed Wangle, std::ostream &hfile) { GlidePolar polar(fixed_one); AircraftState ac; ac.wind.norm = fabs(W); if (negative(W)) { ac.wind.bearing = Angle::degrees(fixed(180)+Wangle); } else { ac.wind.bearing = Angle::degrees(Wangle); } ac.altitude = h; GeoVector vect(fixed(400.0)); GlideState gs (vect, fixed_zero, ac.altitude, ac.wind); GlideResult gr = MacCready::solve(polar, gs); gr.CalcDeferred(ac); hfile << (double)W << " " << (double)Wangle << " " << (double)gr.vector.Bearing.value_degrees() << " " << (double)gr.cruise_track_bearing.value_degrees() << " " << "\n"; }
static void test_glide_cb(const fixed h, const fixed W, const fixed Wangle, std::ostream &hfile) { GlideSettings settings; settings.SetDefaults(); GlidePolar polar(fixed(1)); AircraftState ac; ac.wind.norm = fabs(W); if (negative(W)) { ac.wind.bearing = Angle::Degrees(fixed(180)+Wangle); } else { ac.wind.bearing = Angle::Degrees(Wangle); } ac.altitude = h; GeoVector vect(fixed(400.0), Angle::Zero()); GlideState gs (vect, fixed(0), ac.altitude, ac.wind); GlideResult gr = MacCready::Solve(settings, polar, gs); gr.CalcDeferred(); hfile << (double)W << " " << (double)Wangle << " " << (double)gr.vector.bearing.Degrees() << " " << (double)gr.cruise_track_bearing.Degrees() << " " << "\n"; }
void UnorderedTask::GlideSolutionRemaining(const AircraftState &state, const GlidePolar &polar, GlideResult &total, GlideResult &leg) { GlideResult res; TaskPoint* tp = GetActiveTaskPoint(); if (tp) { res = TaskSolution::GlideSolutionRemaining(*tp, state, polar); res.CalcDeferred(); } else res.Reset(); total = res; leg = res; }
void UnorderedTask::GlideSolutionRemaining(const AircraftState &state, const GlidePolar &polar, GlideResult &total, GlideResult &leg) { GlideResult res; TaskPoint* tp = GetActiveTaskPoint(); if (tp != nullptr && state.location.IsValid()) { res = TaskSolution::GlideSolutionRemaining(*tp, state, task_behaviour.glide, polar); res.CalcDeferred(); } else res.Reset(); total = res; leg = res; }