Beispiel #1
0
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));
}
Beispiel #2
0
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;
  }
}
Beispiel #3
0
 void SetBugs(double _bugs) {
   bugs = _bugs;
   glide_polar_task.SetBugs(degradation_factor * bugs);
 }
Beispiel #4
0
 void SetDegradationFactor(double _degradation_factor) {
   degradation_factor = _degradation_factor;
   glide_polar_task.SetBugs(degradation_factor * bugs);
 }