On 2018-05-17 09:25 +0200, Evaristo Quiroga via Therion wrote:
El 17/05/2018 a las 0:36, Olly Betts escribió:
I think the formula is too complicated. I purpose a simpler formula, like: If bearing <=180 AverageBearing = (bearing + (backbearing -180))/2 else AverageBearing = (bearing + (backbearing +180))/2
Your proposed formula gives wrong answers in some cases - consider:
bearing = 80, backbearing = 0
These give AverageBearing = (80 + 0 - 180) / 2 = -50 (equivalent to 310), but this should be 130 (average of 80 and 180).
In this case is not a problem with my formula, is a serious magnetic anomaly (100 degrees difference) and the program should to stop and to send a warning.
Yes a warning should probably be issued about poor data, but it _is_ a problem with your formula. It's just an example showing that all cases have to be dealt with correctly, including the wrap-around at 0/360 (or 0/400 for grads) and your simplified formula doesn't. An example with a much smaller difference between back and foresight could still be constructed to show the issue: Fore: 175, Back: 0 AverageBearing= (175+0-180)/2 = -2.5. That's wrong. It should be 177.5 in this case. Wookey -- Principal hats: Linaro, Debian, Wookware, ARM http://wookware.org/