Берешь функцию, которая описывает нужную тебе кривую и ищешь координаты равномерно распределенных точек(количество объектов) на этой кривой, кладешь их в массив и расставляешь элементы через js редактируя inline стили.
Для правильного вопроса надо знать половину ответа
Самое простое решение - заранее рассчитать положение элементов для различного их количества и сохранить в массив. В таком случае расстановку для каждого варианта можно производить вручную и избежать наезда элементов друг на друга.
Не знаю как ты будешь рассчитывать положение элементов на кривой чтобы они не пересекались. Проще заранее задать им какую-нибудь позицию в зависимости от количества элементов.