Rotazione di 3 quadrati

final int dim=120;
final int dim2=dim/2;

boolean divisi=false;

float XC, YC;

float angolo=0,
      passo=0.03;

void setup()
{
  size(500, 250, P3D);
  frameRate(30);
  stroke(127);  
  XC=width/2;
  YC=height/2;
}

void mousePressed()  { divisi=true; }
void mouseReleased() { divisi=false; }

void draw()
{  
  background(255);
  angolo+=passo;

  pushMatrix();
	 translate((divisi)?(XC-dim):(XC), YC);
	 rotateX(angolo);

	 fill(255, 0, 0, 90);
	 rect(-dim2, -dim2, dim, dim);
  popMatrix();     

  pushMatrix();
	 translate(XC, YC);
	 rotateY(angolo);

	 fill(0, 255, 0, 90);
	 rect(-dim2, -dim2, dim, dim);
  popMatrix();     

  pushMatrix();
	 translate((divisi)?(XC+dim):(XC), YC);
	 rotateZ(angolo);

	 fill(0, 0, 255, 90);
	 rect(-dim2, -dim2, dim, dim);
  popMatrix();     
}