C помощью какого алгоритма можно равномерно распределить набор частиц вокруг заданной точки?
Для создания диаграмм: тутДля заполнения пространства без пустот:
Сумма всех углов фигур в точке соединения должна составлять 360 градусов и при этом отсутствовать пересечения и пустоты.
А дальше - перебор.
Например, для 4-х квадратов: это поле 2x2, где центр заданной точки (вокруг которой располагаем объекты) расположен точно в точке касания углов всех этих 4-х квадратов (ровно по центру), т.к. углы по 90 градусов: 4*90=360
Если не хотите изобретать велосипеды, используйте Graphviz. Для PHP, кстати, есть модули. Вариантов его применения - тьма. Экспорт в SVG, PDF, PNG.
www.graphviz.org
www.ffnn.nl/pages/articles/media/uml-diagrams-usin...
Ещё yED умеет нечто похожее, но это больше для рисования руками.