Parametric equation of a circle:

int cx, cy;
int segmentCount = 100;
int step = 0;
float plotDiameter, plotRadius;

void setup(){
  size(500, 500);
  cx = width/2;
  cy = height/2;
  plotDiameter =  width * .75;
  plotRadius  = plotDiameter/2;
  frameRate(20);
  background(80);
  noStroke();
  fill(255);
}

void draw(){
  float theta = step * TWO_PI / segmentCount;
  float x = cx + cos(theta) * plotRadius;
  float y = cy + sin(theta) * plotRadius;
  ellipse(x, y, 10, 10);

  if(step == segmentCount){
    background(80);
    step = -1;
  }

  step++;
}

Variant that starts small and grows (View on OpenProcessing):

Circle Patterns Screenshot

int step = 0;
int segmentCount = 70;
int startStep = 0;//offset the start position, not necessary but more interesting while drawing.
float pointDiameter = 0.25;
float plotRadius = 5;
float radiusIncrement = 6;

void setup(){
  size(500, 500);
  background(255);
  noStroke();
}

void draw(){
  step++;

  float theta = (step + startStep) * TWO_PI / segmentCount;
  float x = width/2 + cos(theta) * plotRadius;
  float y = height/2 + sin(theta) * plotRadius;

  float colorComponentA = map(x, 0, width, 100, 255);
  float colorComponentB = map(y, 0, width, 200, 255);
  fill(colorComponentA, (colorComponentA + colorComponentB)/2, colorComponentB);

  ellipse(x, y, pointDiameter, pointDiameter);

  if(step == segmentCount){
    step = 0;
    startStep++;

    plotRadius += radiusIncrement;
    segmentCount += 2;

    //Control how the the plot points grow:
    if(pointDiameter < 6 && plotRadius > 25){
      pointDiameter+=0.25;
    }
  }

  if(plotRadius >= width/2 - width/10){
    noLoop();
    println("fin");
  }
}