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; }
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; }
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; }