Другой простой подход - использование собственного низкочастотного шума для рисования (или определения) фигуры в полярных координатах.
Предположим, вам нужен шарик с центром в начале координат, среднего радиуса 1; это можно легко масштабировать и переводить в другие позиции и размеры. Представьте себе простое уравнение r = 1 - это определит круг радиуса один в начале координат. Чтобы добавить к этому небольшое изменение, вы можете изменить радиус синусоидально - добавьте член вида w 1 * sin (θ + θ 1 ), где w 1 и θ 1 - это константы, к которым я вернусь чуть позже. Один грешный термин не будет иметь большого значения, но наличие нескольких различных синусов разных частот начнет добавлять именно то «мягкое» изменение, которое, я подозреваю, вам нужно. Общая форма будет иметь вид r = 1 + w 1 * sin (θ + θ 1 ) + w2 * sin (2θ + θ 2 ) + w 3 * sin (3θ + θ 3 ) + w 4 * sin (4θ + θ 4 ) + w 5 * sin (5θ + θ 5 ) - или больше терминов, если хотите, конечно.
Так, как мы выбираем значения для w i и θ i ? Ну, θs следует просто выбирать случайным образом из (0,2π) - иными словами, каждая «волна» на форме поверхности должна начинаться в другой точке вокруг формы. Что касается W, есть несколько разных вариантов. Выбор w i случайным образом из (0, w) (для некоторого фиксированного w, который представляет «общее изменение» для придания формы; я мог бы начать с w = 0,25, но экспериментировать с w = 0,1) для каждого i приведет к такому называется белым шумом , где все частоты имеют одинаковый вес - это, безусловно, «самый большой», с широкими вариациями на всех частотах. Выбор w i случайным образом из (0, w * (1 / i)) - другими словами,шум, где вес умолкает, но медленно. Это также называется шумом 1 / f , и это самый известный «фрактальный» шум. Наконец, выбор весов случайным образом из (0, w * (1 / i ^ 2)) (другими словами, деление каждого случайного веса на i ^ 2) дает броуновский шум - это самый «мягкий» из трех, с Наименьшее отклонение от круга - обычно это будет овальная форма.
Вот примеры трех из них, используя «общий вес» w = 0,25 и используя тот же набор случайных значений для w i и θ i, извлеченных из random.org :
«Белый шум»:
Blob "Розовый шум":
BLOB-объект «Броуновский шум»:
Обратите внимание, что эти капли не будут идеальными; в частности, они не могут свернуться сами (поскольку для каждого θ - другими словами, для каждого угла от начала координат - есть единственное значение r), и если вы не выберете правильные веса, они могут самостоятельно пересекаются (если r разрешено идти отрицательным). Но они отлично справляются со своей работой, и для большинства игровых приложений пользователи не заметят никаких проблем.