void VLiftCoeff (VESSEL *v, double aoa, double M, double Re, void *context, double *cl, double *cm, double *cd)
{
int i;
//const int nabsc = 9;
//static const double AOA[nabsc] = {-180*RAD,-60*RAD,-30*RAD, -2*RAD, 15*RAD,20*RAD,25*RAD,60*RAD,180*RAD};
//static const double CL[nabsc] = { 0, 0, -0.4, 0, 0.7, 1, 0.8, 0, 0};
//static const double CM[nabsc] = { 0, 0, 0.014, 0.0039, -0.006,-0.008,-0.010, 0, 0};
const int nabsc=33;
static const double AOA[nabsc]={-180*RAD,-165*RAD,-150*RAD,-135*RAD,-120*RAD,-105*RAD,-90*RAD,-75*RAD,-60*RAD,-45*RAD,-30*RAD, -25*RAD , -20*RAD , -15*RAD , -10*RAD , -5*RAD , 0*RAD , 5*RAD , 10*RAD , 15*RAD , 20*RAD , 25*RAD, 30*RAD, 60*RAD, 90*RAD, 120*RAD, 150*RAD, 165*RAD, 180*RAD };
static const double CL[nabsc] ={-.305,-1.689,-.798,-.322,-.163,-.119,-.108,-.103,-.141,-.249,-.591,-.807,-1.013,-1.006,-.721,-.312,0.305, .906,.942 ,0.901,1.380,1.355,1.223,.906,.642,.144,.093,.159,.735,1.253, -.302} ;
static const double CM[nabsc] ={-.060,-.040,-.061,-.059,-.050,-.035,-.018,-.004,.003,.001,-.002,-.005,-.010,-0.017,-0.046, -0.060,-.073,-.084,-.040,-.065,-.061,-.059,-.035,-.004, .001,-.005,-.060};
for (i = 0; i < nabsc-1 && AOA[i+1] < aoa; i++);
double f = (aoa-AOA[i]) / (AOA[i+1]-AOA[i]);
*cl = CL[i] + (CL[i+1]-CL[i]) * f; // aoa-dependent lift coefficient
*cm = CM[i] + (CM[i+1]-CM[i]) * f; // aoa-dependent moment coefficient
double saoa = sin(aoa);
double pd = 0.015 + 0.4*saoa*saoa; // profile drag
*cd = pd + oapiGetInducedDrag (*cl, 1.5, 0.7) + oapiGetWaveDrag (M, 0.75, 1.0, 1.1, 0.04);
// profile drag + (lift-)induced drag + transonic/supersonic wave (compressibility) drag
}