PVector a,b,c,d;

void setup (){
  size(500,500,P3D);
  background(255);
  a = new PVector(20,20,0);
  stroke(0);
  smooth();
}

void draw(){
  background(255);
  translate(-100,mouseY*3,0);
  rotate(radians(-mouseY),radians(mouseX),radians(0),radians(0));
  //noFill();
  int rad = 40;
  //rect(a.x,a.y,width-rad,width-rad);
  translate(0,0,50);
    for (int i = 0; i < 800; i+=rad*2){
        for (int j = 0; j < 800; j+=rad*2){
         fill(255);
         stroke(0,100);
         strokeWeight(1);
         pushMatrix();
           for (int k = 30; k >0; k--){
             ellipse(i,j,k*1.2,k*1.2);
             translate(mouseX/50,mouseY/100,k/3);
           }
          popMatrix();
          strokeWeight(2);
          stroke(0,200);
          line(i,j,0,mouseX,mouseY,-200);  
          strokeWeight(5);
          line(mouseX,mouseY,-200,mouseX,mouseY,-300);
          }
      }
}