cirkelvorm header

 

 

cirkelvorm als in de schets

 

 cirkelvorm met extra rechthoek roterend in Y richting

 cirkels met verschillende posities op de x as

 

 cirkelvorm met stilstaande rechhoeken

 

 

 

cirkelvorm

 

 

 

 cirkelvorm

 

 

 

 

 

vormen met de niet roterende rechthoek

Vormen met de niet roterende rechthoek
background in setup()

 

 

 

 

De schets movingGear in openprocessing als inspiratie voor CirkelVorm.
Dit zijn draaiende vormen die in een cirkel zijn gerangschikt
Als je voor rotatiemode 0 kies staan de vormen stil. De schets is uitgelijnd naar fullScreen();

 

 

CirkelVorm rechthoek;  
CirkelVorm ellipse1;  
CirkelVorm ellipse2;
void setup() {  
 //size(960, 540, P3D);
fullScreen(P3D); 
 
 //Argumenten van de constructor: 
 //1) vormlengte, 2) vormbreedte, 3) cirkeldiameter, 4) start draaihoek, 5) draaisnelheid, 6)  positie cirkel x as,

//7) rotatiemode, 8) aantal vormen, 9)  kleur.
//rotatiemode 4 = Z as rotatie, 4) start draaihoek is dan ook een X as draaihoek
 
rechthoek = new CirkelVorm(width/8, height/96, width/6.4, 0, 1, width/2, 1, 20, color(255, 0, 0, 100));  
 ellipse1 = new CirkelVorm(width/8, height/25, width/9.6, 40,  1, width/2, 2, 10, color(0, 255, 0, 100));  
 ellipse2 = new CirkelVorm(width/8, height/30, width/4.8, 90,  1, width/2, 2, 8, color(0, 0, 255, 100)); 
} 

 
void draw() {  
 background(255);  
 pushMatrix(); 
 rechthoek.rechthoek();  
 popMatrix(); 

 
pushMatrix(); 
 ellipse1.ellips(); 
 popMatrix(); 

pushMatrix(); 
 ellipse2.ellips(); 
 popMatrix(); 
}
 

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:  
 //vormlengte, vormbreedte, cirkeldiameter, start draaihoek, draaisnelheid, xpos is positie cirkel op de x as  
 //rotatiemode, aantal vormen, kleur. 

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); 
 } 
}