Code van de superclass "Vormen".
Voor het toepassen van de draaienRe(); en draaienLi(); 
1) De code in draw(); tussen pushMatrix(); en popMatrix();  plaatsen.
2) De vormen in setup() in het (0,0) punt  plaatsen.

3) In draw(); mbv translate(x,y); de vormen in de gewenste positie plaatsen,  zie het voorbeeld bij   "Drieh_an"

De dpAan() methode wordt gebruikt om de draaipunten van de vormen als rode puntjes zichtbaar te maken,  zie het voorbeeld in  "Drieh_nh_90"

Onder de supeclass "vormen: staat de class  "Ruitjes", een class om ruitjespapier toe te voegen

 

class Vormen {     
  float n; float sw; float h; float l; float h1; float h2; char letter; int lr;  int d;  int r;    
  float x; float y; float hoek; color c1; color c2; color c3; color c4; color c5; String text;     
  //variabelen en constante van de methodes in de superclass     
  float s;    
  float ysnelhUp = 1; float ysnelhDown = 1;     
  float xsnelhRe = 1; float xsnelhLi = 1;     
   
  //De lege constructor     
  Vormen() {   
  }     
   
  //De lege display methode     
  void display() {   
  }    
    
  void dpAan() {  
   pushMatrix();    
   translate(x, y);   
   stroke(255,0,0);   
   strokeWeight(n/5);   
   point(0,0);   
   strokeWeight(1);   
   stroke(0);   
   popMatrix();   
  }  
   
  void dpRotRe(Vormen obj) {     
    obj.hoek = obj.hoek + 0.5;     
    if (obj.hoek >= 360) obj.hoek= 0;   
  }     
   
  void dpRotLi(Vormen obj) {     
    obj.hoek = obj.hoek - 0.5;     
    if (obj.hoek <= -360) obj.hoek= 0;   
  }     
   
  void dpRotReS(Vormen obj) {     
    obj.hoek = obj.hoek + 1.2;     
    if (obj.hoek >= 360) obj.hoek= 0;   
  }     
   
  void dpRotLiS(Vormen obj) {     
    obj.hoek = obj.hoek - 1.2;     
    if (obj.hoek <= -360) obj.hoek= 0;   
  }     
   
  void draaienRe() {    
    s = s + 0.5;    
    rotate(radians(s));    
    if (s > 360) s = 0;   
  }   
   
  void draaienLi() {    
    s = s - 0.5;    
    rotate(radians(s));   
    if (s < -360) s = 0;   
  }   
   
  void yUpDown() {     
    y = y - ysnelhUp;     
    if ((y < 0) || (y > height)) {     
      ysnelhUp = ysnelhUp* -1;   
    }   
  }     
  void yDownUp() {     
    y = y + ysnelhDown;     
    if ((y < 0) || (y > height)) {     
      ysnelhDown = ysnelhDown* -1;   
    }   
  }     
  void xReLi() {     
    x = x - xsnelhRe;     
    if ((x > width) || (x < 0)) {     
      xsnelhRe = xsnelhRe * -1;   
    }   
  }     
   
  void xLiRe() {     
    x = x + xsnelhLi;     
    if ((x > width) || (x < 0)) {     
      xsnelhLi = xsnelhLi * -1;   
    }   
  }   
}
 
de class "Ruitjes"
 
 

class Ruitjes {   
 float y;  
 float x;  
 float n;   
   
 Ruitjes(float n_, float x_, float y_) {   
 x = x_;  
 y = y_;  
 n = n_;   
 }   
   
 void display() {   
 strokeWeight(1);   
 stroke(0);  
 // horizontale lijntjes   
 for (float i = 0; i < height/2; i = i + n) {   
 line(0,height/2+i,width, height/2+i); //naar beneden  
 line(0,height/2-i,width, height/2-i); //naar boven  
 }   
   
 //verticale lijntjes   
 for (float i = 0; i < width/2; i = i + n) {   
 line(width/2+i,0, width/2+i,height); //naar rechts  
 line(width/2-i,0, width/2-i,height); //naar links  
 }  
   
 strokeWeight(2);   
 stroke(255, 0, 0);   
 //rode assenstelsel   
 line(0, height/2, width, height/2);   
 line(width/2, 0, width/2, height);   
 stroke(0);  
 strokeWeight(n/10);  
 //om de 5 vakjes een controle puntje plaatsen   
 for (int k = 0; k < height; k = k+5) {   
 point(x-k*n, y);   
 point(x+k*n, y);   
 point(x, y-k*n);   
 point(x, y+k*n);   
 }   
 strokeWeight(1);   
 stroke(0);   
 }   
}