Dispersión de números en una matriz de JavaScript

Tengo una serie de10+ números. Representan coordenadas en un círculo, en grados, es decir, cada número está en el medio0 y359.999999...

El problema que estoy tratando de resolver es que cuando dibujo mis elementos en el círculo (a través de la API de lienzo html5), a veces se agrupan y eso hace que los elementos se dibujen entre sí.

Por lo tanto, me gustaría crear un algoritmo que disperse los elementos de manera uniforme alrededor de su posición inicial del clúster. Digamos (y me gustaría que esta sea una opción configurable) la distancia mínima entre dos elementos es5 grados

Entonces, si la matriz inicial es[5, 41, 97, 101, 103, 158, 201, 214, 216, 217, 320] entonces me gustaría que el algoritmo tuviera algo como [5, 41,95, 100, 105158, 201211, 216, 221, 320] (con elementos en negrita dispersados alrededor de su "centro de gravedad" inicial independientemente de si son 2 o más elementos).

Además, lo que sería necesario es que el algoritmo reconozca que 0 y 359 están separados por solo 1 unidad (grado) y también distribuye dichos elementos de manera uniforme.

¿Alguien ha creado tal algoritmo o tiene una buena idea de cómo se podría lograr? Incluso algunos pensamientos generales son bienvenidos. Estoy seguro de que podría lograrlo con un montón de prueba y error, pero me gustaría escuchar algunas conjeturas fundamentadas, si lo desea, primero.