Рассеяние чисел в массиве JavaScript
У меня есть массив10+
номера. Они представляют координаты на окружности - в градусах, то есть каждое число находится между0
а также359.999999...
Проблема, которую я пытаюсь решить, заключается в том, что когда я рисую свои элементы по кругу (через html5 canvas api), иногда они объединяются в кластеры, и это приводит к тому, что элементы рисуются друг на друга.
Поэтому я хотел бы создать алгоритм, который равномерно распределяет элементы вокруг их начальной позиции в кластере. Допустим (и я хотел бы, чтобы это был настраиваемый параметр) минимальное расстояние между двумя элементами5
градусов.
Так что, если начальный массив[5, 41, 97, 101, 103, 158, 201, 214, 216, 217, 320]
тогда я бы хотел, чтобы алгоритм придумал что-то вроде [5, 41,95, 100, 105158, 201,211, 216, 221, 320] (с полужирными предметами, рассеянными вокруг их начального «центра тяжести», независимо от того, являются ли они 2 или более предметами).
Также, что было бы необходимо, так это то, что алгоритм распознает 0 и 359 на расстоянии всего лишь 1 единицы (градуса), а также равномерно распределяет такие элементы.
Кто-нибудь когда-либо создавал такой алгоритм или хорошо представлял, как его можно достичь? Даже некоторые общие мысли приветствуются. Я уверен, что смог бы добиться этого с большим количеством проб и ошибок, но я хотел бы услышать некоторые образованные предположения, если вы будете, в первую очередь.