localWind(pos, _s, v);
t->setWind(v);
- t->setAir(_pressure, _temp);
+ t->setAir(_pressure, _temp, _rho);
t->integrate(_integrator.getInterval());
t->getTorque(v);
_ground[3] = fromOrigin;
}
-void Model::setAir(float pressure, float temp)
+void Model::setAir(float pressure, float temp, float density)
{
_pressure = pressure;
_temp = temp;
- _rho = Atmosphere::calcDensity(pressure, temp);
+ _rho = density;
}
void Model::setWind(float* wind)
float dist = ground[3] - Math::dot3(ground, _wingCenter);
if(dist > 0 && dist < _groundEffectSpan) {
float fz = Math::dot3(faero, ground);
- Math::mul3(fz * _groundEffect * dist/_groundEffectSpan,
- ground, faero);
+ fz *= (_groundEffectSpan - dist) / _groundEffectSpan;
+ fz *= _groundEffect;
+ Math::mul3(fz, ground, faero);
_body.addForce(faero);
}