Алгоритм распределения точек на плоскости
Поскольку фигуры имеют центральную симметрию, то имеет смысл перейти к полярным координатам. 
1. Сфера
for (var i:uint = 0; i < 10000; ++i)
{
       w = i;
       r = R * Math.random();

       // Преобразование в декартовые координаты
       // Задание цвета и размера точки
}

2. Наложение нескольких сфер с разными центрами (разные X0 и Y0 в декартовых координатах)
3. Для получения кольца можно использовать следующую подход
for (var i:uint = 0; i < 10000; ++i)
{
       w = i;
       r = R + dR * Math.random();

       // Преобразование в декартовые координаты
       // Задание цвета и размера точки
}


Дальше кольца с разными радиусами просто накладываются друг на друга.
4. Более хитрые фигуры получаются аналогичных образом:
r =  r(w) + dR * Math.random();
Например, спираль:
for (var i:uint = 0; i < 10000; ++i)
{
       w = 0.05 * i;
       r = 5 * w + dR * Math.random();

       // Преобразование в декартовые координаты
       // Задание цвета и размера точки
}


Коэффициенты подбираются в зависимости от конкретного случая.
Для разных фигур будут соверщенно разные алгоритмы.
Пару дней назад тоже решал эту задачу.

общий алгоритм такой:
1)создаем двухмерный массив с нулями
2)выбираем произвольную точку — основу круга. Выбираем радиус.
3)выбираем формулу какой либо фигуры (в моем случае круг)
4)проходим по всем элементам массива, проверяя принадлежность текущей точки к фигуре. Если точка принадлежит фигуре — ставим в данное поле массива единичку с случайным шансом.
5)увеличиваем радиус
6)повторяем 1-5 пару раз.

думаю выходит не совсем удачно в плане производительности, но работает.
подробную реализацию (для круга) скину в лс по запросу.

На выходе получается вот что: (очень зависит от коэффициентов, за пару минут можно подобрать нужную плотность)



Над чем работаете, если не секрет?