void RoutePolar::Initialise(const GlidePolar& polar, const SpeedVector& wind, const bool is_glide) { for (unsigned i = 0; i < ROUTEPOLAR_POINTS; ++i) { const Angle ang = IndexToAngle(i); GlideResult res = SolveTask(polar, wind, ang, is_glide); if (res.IsOk()) { RoutePolarPoint point(res.time_elapsed, res.height_glide); points[i] = point; } else points[i].valid = false; } }
void RoutePolar::Initialise(const GlideSettings &settings, const GlidePolar& polar, const SpeedVector& wind, const bool is_glide) { static constexpr Angle ang_step = Angle::FullCircle() / ROUTEPOLAR_POINTS; Angle ang = Angle::QuarterCircle(); for (unsigned i = 0; i < ROUTEPOLAR_POINTS; ++i, ang -= ang_step) { GlideResult res = SolveTask(settings, polar, wind, ang, is_glide); if (res.IsOk()) { RoutePolarPoint point(res.time_elapsed, res.height_glide); points[i] = point; } else points[i].valid = false; } }