void GlidePolarTest::TestBugs() { polar.SetBugs(fixed(0.75)); ok1(equals(polar.GetBugs(), 0.75)); ok1(equals(polar.polar.a, polar.ideal_polar.a * 4 / 3)); ok1(equals(polar.polar.b, polar.ideal_polar.b * 4 / 3)); ok1(equals(polar.polar.c, polar.ideal_polar.c * 4 / 3)); ok1(equals(polar.SinkRate(Units::ToSysUnit(fixed(80), Unit::KILOMETER_PER_HOUR)), 0.808)); ok1(equals(polar.SinkRate(Units::ToSysUnit(fixed(120), Unit::KILOMETER_PER_HOUR)), 1.32)); ok1(equals(polar.SinkRate(Units::ToSysUnit(fixed(160), Unit::KILOMETER_PER_HOUR)), 2.557333)); ok1(equals(polar.GetVMin(), 19.93464)); ok1(equals(polar.GetVBestLD(), 25.83043)); polar.SetBugs(fixed(1)); }
static void OnBugsData(DataField *_Sender, DataField::DataAccessKind_t Mode) { DataFieldFloat *Sender = (DataFieldFloat *)_Sender; switch (Mode) { case DataField::daChange: glide_polar.SetBugs(fixed_one - (Sender->GetAsFixed() / 100)); changed = true; break; case DataField::daSpecial: return; } }
void SetBugs(double _bugs) { bugs = _bugs; glide_polar_task.SetBugs(degradation_factor * bugs); }
void SetDegradationFactor(double _degradation_factor) { degradation_factor = _degradation_factor; glide_polar_task.SetBugs(degradation_factor * bugs); }