Как говорится в неразумии, World of Goo - это не столько форма, сколько физическое моделирование.
Но простой способ создания шарообразных нерегулярных фигур может состоять в том, чтобы начать с n вершин (точек) V_1, V_2 ... V_n по кругу и применить к нему некоторую случайную деформацию. Существует много способов сделать это, перейдя от простого перемещения отдельных вершин к сложным физическим симуляциям.
Некоторые идеи:
1) Выберите случайную вершину V_i, выбрали случайный вектор Т, применить этот вектор в качестве перевода (перемещения) в V_i, применять T для всех остальных вершин v_J тоже, но уменьшенные в зависимости от «расстояния» от V_i (где расстояние может быть абсолютным различием между j и i или фактическим геометрическим расстоянием от V_j до V_i). Для коэффициента масштабирования вы можете использовать любую функцию f, которая равна 1 для f (0) и уменьшается для увеличения расстояний (в основном радиальная базисная функция).
for each V_j
V_j = scalingFactor(distance(V_i, V_j)) * translationVector + V_j
2) Вы двигаетесь V_i как в 1, но теперь вы имитировать весеннюю связь между всеми neigbouring вершинами и итеративно переместить все вершины на основе сил, созданных натяжных пружинами.
3) Для более круглых форм вы можете сделать 1) или 2) на контрольных точках кривой B-сплайна.
Остерегайтесь самопересечений при слишком большом перемещении вершин.
Только некоторые приблизительные идеи, не проверенные ...
Спасибо за ответ. Но я думаю, что это больше, чем разнообразные эллипсы, потому что некоторые из шариков кажутся асимметричными для меня. – tomato