Flower Generator was my final project for Computer Graphics. It was based off of Nervous System's Floraform.
It works by starting with several concentric rings of point masses connected by springs. The outer most rings expand faster than the inner most rings, causing the ruffling shapes. When the rings get too large, they are subdivided into more points and more rings.
Sphere to sphere collision detection is used to prevent self intersection. Each vertex contains its own sphere, and collisions are prevented from other spheres on distant parts of the surface.