Я работаю над диаграммой, в которой есть множество предметов вокруг круга. Для каждого элемента у меня есть радиан, который позволяет мне помещать его в правильное положение, но у меня есть перекрытия, и я хотел бы распространять предметы, но чтобы они оставались рядом (как можно ближе) к их исходным позициям.алгоритм распространения предметов вокруг круга около их стартовых позиций
Во избежание совпадений каждый элемент должен быть не менее 7 градусов от любого смежного элемента. Всегда будет достаточно места для всех предметов по всему кругу - максимум 20 предметов, для каждого предмета может быть 18 степеней разделения (не то, чтобы это когда-либо происходило именно так), но вполне вероятно, что я буду имеют до 6 или 8 элементов, сгруппированных в области и, возможно, нескольких кластеров.
Чаще всего у меня будет от 10 до 12 предметов, но чтобы было легко проиллюстрировать - скажем, у меня есть 5 предметов на расстоянии 1 градуса: [1,2,3,4,5]. В идеале результат будет [349,356,3,10,17] - каждый элемент 7 градусов от любого другого предмета с пунктом 3 остается неизменным, но все предметы остаются как можно ближе к их исходным позициям.
Конечно, когда у меня есть все 20 предметов - я рискую переместить предмет в другой предмет. Возьмем аналогичный пример: [340,1,2,3,4,5]. То же, что и выше, кроме перемещения с 1 по 346, приведет к другому перекрытию.
Полный список предметов радианов, знает ли кто-нибудь о методе выполнения того, что я пытаюсь сделать?
Я просто не могу понять, как это осуществить.
Разделить 360 градусов на количество элементов? –
Равномерное расстояние - это просто, и я не представляю данные, которые я показываю. Элементы позиционируются относительно данных, которые они представляют. Мне нужно, чтобы они оставались на своих назначенных позициях или рядом с ними, но все равно распространялись так, чтобы они не перекрывались. – Michael