Thanks Pisces for the analysis on 3-bearing AOB method!
I've just released v0.3 and added probability calculation for positional/course error distributions, assuming a random inaccuracy of bearing input within a range of -0.5 to 0.5 deg. The probability is computed over 1000 iterations.
Since this tool uses least squares optimisation to interpolate an solution, I can keep the original time interval and take one more bearing to further reduce the impact from bearing inaccuracies.
An example of recording a 5 deg/min bearing rate target when stationary:
Code:
time t1 = 0 (sec)
ownship heading at t1 (deg): 0
target bearing at t1 (deg): 350
ownship straight direction from last position = 0 (deg)
ownship straight distance from last position = 0 (meter)
*******************************
time t2 (sec): 120
ownship heading at t2: 0
target bearing at t2 (deg): 0
ownship straight direction from last position (deg): 0
ownship straight distance from last position (meter): 0
*******************************
time t3 (sec): 240
ownship heading at t3: 0
target bearing at t3 (deg): 10
ownship straight direction from last position (deg): 0
ownship straight distance from last position (meter): 0
target course: 90deg
probability of target course error within 5deg: 29.5868 %
probability of target course error within 10deg: 54.7107
probability of target course error within 20deg: 89.9174
3 bearings when stationary can only get course solution.
*******************************
time t4 (sec): 360
ownship heading at t4: 0
target bearing at t4 (deg): 19.4
ownship straight direction from last position (deg): 0
ownship straight distance from last position (meter): 0
target course: 89.78deg
probability of target course error within 5deg: 55.1948 %
probability of target course error within 10deg: 87.6623
probability of target course error within 20deg: 100 %
4 bearings when stationary can only get course solution.
*******************************
time t5 (sec): 480
ownship heading at t5: 0
target bearing at t5 (deg): 27.8
ownship straight direction from last position (deg): 0
ownship straight distance from last position (meter): 0
target course: 89.64deg
probability of target course error within 5deg: 85.7143 %
probability of target course error within 10deg: 100 %
probability of target course error within 20deg: 100 %
5 bearings when stationary can only get course solution.
*******************************
time t6 (sec): 600
ownship heading at t6: 0
target bearing at t6 (deg): 35.1
ownship straight direction from last position (deg): 0
ownship straight distance from last position (meter): 0
target course: 89.71deg
probability of target course error within 5deg: 100 %
probability of target course error within 10deg: 100 %
probability of target course error within 20deg: 100 %
6 bearings when stationary can only get course solution.
As you can see the probability of target course error within 5 deg almost doubled by adding the 4th bearing into interpolation. Adding a 5th bearing can even improve it to over 85%.
But looks like simply increasing the time interval virtually achieved the same result:
Code:
time t1 = 0 (sec)
ownship heading at t1 (deg): 0
target bearing at t1 (deg): 350
ownship straight direction from last position = 0 (deg)
ownship straight distance from last position = 0 (meter)
*******************************
time t2 (sec): 240
ownship heading at t2: 0
target bearing at t2 (deg): 10
ownship straight direction from last position (deg): 0
ownship straight distance from last position (meter): 0
*******************************
time t3 (sec): 480
ownship heading at t3: 0
target bearing at t3 (deg): 27.8
ownship straight direction from last position (deg): 0
ownship straight distance from last position (meter): 0
target course: 89.6deg
probability of target course error within 5deg: 85.6198 %
probability of target course error within 10deg: 100 %
probability of target course error within 20deg: 100 %
3 bearings when stationary can only get course solution.
And I've also updated the example in the original post. Since the bearing rate is lower and the target is pretty far away, the solution is more error prone to bearing inaccuracies.