De class CirkelVorm met 4 rotatie modi.

 

//CirkelVorm is een class waarin de vormen rect en ellipse in een cirkel worden gerangschikt   
//een extra methode en constructor tbv een niet roterende rechthoek toegevoegd   
class CirkelVorm {   
 float x; float y; float b; float l;  
 float diameter; float hoek; float snelh;  
 float xpos; int rotatiemode; int aantal;  
 float teller;  
 color c;  
 
//Argumenten van de constructor:    
// 1)vormlengte,  2) vormbreedte,   3) cirkelstraal, 4) start draaihoek, 5) draaisnelheid, 6) positie cirkel x as,   
// 7)rotatiemode, 8) aantal vormen, 9) kleur.   
  
//rotatiemode: 0) geen rotatie, 1) assenstelsel, 2) x as, 3) y as, 4) = Z as, dan moet de start draaihoek > 0 zijn  
//met 5) draaisnelheid is negatief --> draaing tegen de klok in  
   
//           1         2         3         4            5             6           7          8            9   
CirkelVorm(float l_, float b_, float d_, float hoek_, float snelh_, float xpos_, int rmod_, int aantal_, color c_) {   
 b = b_;   
 l = l_;   
 diameter = d_;   
 hoek = hoek_;  
 xpos = xpos_;  
 snelh = snelh_;  
 rotatiemode = rmod_;   
 aantal = aantal_;   
 c = c_;  
 }  
  
 //Constructor voor de niet roterende rechthoek   
 CirkelVorm(float x_, float y_, float l_, float b_, color c_) {   
 x = x_;   
 y = y_;   
 l = l_;   
 b = b_;  
 c = c_;  
 }  
 void rechthoek() {  
 teller = teller + snelh;   
 for (int i = 0; i < 360; i+=360/aantal) {   
 float x = xpos + sin(radians(i))* diameter;   
 float y = height/2 + cos(radians(i))* diameter;   
 pushMatrix();   
 translate(x, y);   
 if (rotatiemode == 1) rotate(radians(-i+teller+hoek));   
 if (rotatiemode == 2) rotateX(radians(-i+teller+hoek));   
 if (rotatiemode == 3) rotateY(radians(-i+teller+hoek)); 
 if (rotatiemode == 4)  { 
    rotateX(radians(hoek)); 
    rotateZ(radians(-i+teller+hoek)); 
}  
 fill(c);   
 rectMode(CENTER);   
 rect(0, 0, l, b, 25);   
 popMatrix();  
 }  
 } 
void ellips() {  
 teller = teller + snelh;   
 for (int i = 0; i < 360; i+=360/aantal) {   
 float x = xpos + sin(radians(i))* diameter;   
 float y = height/2 + cos(radians(i))* diameter;   
 pushMatrix();   
 translate(x, y);   
 if (rotatiemode == 1) rotate(radians(-i+teller+hoek));   
 if (rotatiemode == 2) rotateX(radians(-i+teller+hoek));   
 if (rotatiemode == 3) rotateY(radians(-i+teller+hoek)); 
 if (rotatiemode == 4) { 
   rotateX(radians(hoek)); 
   rotateZ(radians(-i+teller+hoek)); 
} 
fill(c); 
ellipse(0, 0, l, b);   
 popMatrix();  
 }  
 } 
  
void rechthoekNietRoterend() {   
 rectMode(CENTER);   
 fill(c);   
 rect(x, y, l, b);  
 }  
}