예제 #1
0
파일: GlidePolar.cpp 프로젝트: DRIZO/xcsoar
fixed
GlidePolar::GetWingLoading() const
{
  if (positive(wing_area))
    return GetTotalMass() / wing_area;

  return fixed(0);
}
예제 #2
0
double
GlidePolar::GetWingLoading() const
{
  if (wing_area > 0)
    return GetTotalMass() / wing_area;

  return 0;
}
예제 #3
0
파일: GlidePolar.cpp 프로젝트: DRIZO/xcsoar
void
GlidePolar::Update()
{
  assert(positive(bugs));

  if (!ideal_polar.IsValid()) {
    Vmin = Vmax = fixed(0);
    return;
  }

  const fixed loading_factor = sqrt(GetTotalMass() / reference_mass);
  const fixed inv_bugs = fixed(1)/bugs;

  polar.a = inv_bugs * ideal_polar.a / loading_factor;
  polar.b = inv_bugs * ideal_polar.b;
  polar.c = inv_bugs * ideal_polar.c * loading_factor;

  assert(polar.IsValid());

  UpdateSMax();
  UpdateSMin();
}