Ejemplo n.º 1
0
fixed
UpdateLD(fixed ld, fixed leg_distance, fixed height_above_leg,
         fixed filter_factor)
{
  if (!positive(leg_distance))
    return ld;

  fixed glideangle = height_above_leg / leg_distance;
  if (ld != fixed(INVALID_GR))
    glideangle = LowPassFilter(fixed_one / ld, glideangle, filter_factor);

  if (fabs(glideangle) > fixed_one / INVALID_GR)
    ld = LimitLD(fixed_one / glideangle);
  else
    ld = fixed(INVALID_GR);

  return ld;
}
Ejemplo n.º 2
0
double
UpdateLD(double LD, double d, double h, double filter_factor)
{
  double glideangle;
  if (LD != 0) {
    glideangle = 1.0 / LD;
  } else {
    glideangle = 1.0;
  }
  if (d != 0) {
    glideangle = LowPassFilter(1.0 / LD, h / d, filter_factor);
    if (fabs(glideangle) > 1.0 / INVALID_GR) {
      LD = LimitLD(1.0 / glideangle);
    } else {
      LD = INVALID_GR;
    }
  }
  return LD;
}
Ejemplo n.º 3
0
fixed
UpdateLD(fixed LD, fixed leg_distance, fixed height_above_leg,
         fixed filter_factor)
{
  if (!positive(leg_distance))
    return LD;

  fixed glideangle;
  if (LD != fixed_zero)
    glideangle = fixed_one / LD;
  else
    glideangle = fixed_one;

  glideangle = LowPassFilter(fixed_one / LD, height_above_leg / leg_distance,
                             filter_factor);

  if (fabs(glideangle) > fixed_one / INVALID_GR)
    LD = LimitLD(fixed_one / glideangle);
  else
    LD = fixed(INVALID_GR);

  return LD;
}