What is wrong with this c code line? -
this line
double hdg_and_lee = cal_array[variation] + normalize(corrected.hdg + (corrcalc.twa > 0 && corrcalc.twa < 180) ? -abs(corrected.leeway) : abs(corrected.leeway)); returns value of cal_array[variation], incorrect. corrected.leeway happens 0 corrected.hdg 211, variation 14 , line evaluates to.
i changed this, works think should same line above.
double lee = (corrcalc.twa > 0 && corrcalc.twa < 180) ? -abs(corrected.leeway) : abs(corrected.leeway)); double hdg_and_lee; hdg_and_lee = cal_array[variation] + corrected.hdg + lee; hdg_and_lee = normalize(hdg_and_lee); i can't see did wrong.
here normalize. makes angle between 0 , 360;
double normalize(double angle){ while (angle < 0) angle += 360; while (angle > 360) angle -= 360; return angle; } this driving me nuts of course have working alternative. want know went wrong.
try this
double hdg_and_lee = cal_array[variation] + normalize(corrected.hdg + ((corrcalc.twa > 0 && corrcalc.twa < 180)? -abs(corrected.leeway) : abs(corrected.leeway))); check c operator precedence + vs. ?:.
Comments
Post a Comment