Хотите удалить перекрытие точек, сдвинув точки на дельта-расстояние, но смещение из одной точки приводит к перекрытию с другой точкой - PullRequest
0 голосов
/ 27 мая 2020

У меня есть ситуация, когда есть точки, расположенные в некоторой степени круговым расположением. Есть 2 слоя, внешний слой показан красным цветом, а внутренний - синим. Пространство между этими двумя слоями заполняется случайным образом точками, показанными черным цветом, как показано на изображении. Arrangement of points

Все эти точки имеют определенный диаметр, в результате чего они в определенной степени перекрываются, как это видно на изображении. Я хотел бы удалить перекрытия, индивидуально обозначив все точки, если они есть, и сдвинуть точку. Ниже приведен код, который я использую. Это только для одного конкретного c перекрытия между точками среднего уровня и внутреннего слоя, но этот код работает итеративно для всех комбинаций. Я смещаю точки, чтобы уменьшить расстояние, смещенная точка в некоторых случаях перекрывается с другой точкой, которая уже была пройдена в l oop и ранее не перекрывалась. Поскольку я не могу go вернуться к этой точке снова из-за характера кода, перекрытия остаются только при изменении местоположения. Я попытался поставить условие while (True), чтобы код работал до тех пор, пока он не завершит одну полную итерацию всех точек без перекрытия, но это приводит к бесконечному l oop, предполагая, что перекрытие все еще происходит так или иначе .

Пожалуйста, подскажите, какая модификация алгоритма требуется. Или, если вы можете предложить лучший подход, было бы здорово.

...