A GuessFactor of 1.0 represents the bearing offset that the enemy would reach if it maximized its escape angle while moving in its current direction relative to the firing bot (i.e., clockwise or counter-clockwise), -1.0 represents the bearing offset that the enemy would reach if it maximized his escape angle after reversing directions, and 0.0 represents the bearing offset that points directly at the enemy (as in head-on targeting).
int lateralDirection = ...; double bearingOffset = normalRelativeAngle(...); double maxEscapeAngleClockwise = ...; double maxEscapeAngleCounterclockwise = ...; double maxEscapeAngle = (bearingOffset < 0) ? maxEscapeAngleCounterclockwise : maxEscapeAngleClockwise; double guessFactor = lateralDirection * bearingOffset / maxEscapeAngle;
How it works
The idea of the GuessFactor calculation is to express the enemy's bearing offset as a fraction of its maximum escape angle, while simultaneously ignoring its lateral direction.
lateralDirection can be calculated directly by
sign(lateralVelocity), but a more complex equation may be needed for accuracy when lateral velocity is close to 0.
bearingOffset can be calculated using waves.
maxEscapeAngleCounterclockwise can be calculated by any maximum escape angle algorithm.