Одним из способов было бы вычислить средний угол, вычесть из всех углов, получая результат между -circle/2 и круг/2 (где, например, круг 2р, если вы используете радиан) и принять диапазон (средний угол + мин этих, средний угол + макс).
Это может потерпеть неудачу, по крайней мере, двумя способами: вы можете не найти средний угол (что означает север, восток, юг, запад?), А min и max могут быть -circle/2 и circle/2 соответственно, поэтому ваш диапазон будет целым кругом.
Я думаю, что «правильный» способ вычисления среднего угла состоит в том, чтобы превратить все углы в единичные векторы, взять среднее из них и использовать atan2 для поиска ориентации среднего вектора; это средний угол. Но обратите внимание, что в n, e, s, например, средний единичный вектор будет равен 0,0, а atan2 будет возвращать nan.
Если вы используете язык C (ish), остальная функция функции математической библиотеки удобна для нормализации углов; остаток (a, круг) будет находиться между -circle/2 и circle/2.