header

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

beziercubic

 

beziercubic

 

Het script met de twee verschillende constructors tbv de subClass manSub en bezierCubicSub,       terug naar de inleiding

 

ManSub man; 
BezierCubicSub bez1; 
BezierCubicSub bez2;
 
BezierCubicSub bez3; 

void setup() { 
 size(800, 800); 
 man = new ManSub(width/2, height/2, 40, 100, color(0, 220, 0)); 
//Punten van de Bezierkromme: eerste ankerpunt, controle punten 1 en 2, tweede ankerpunt  
 bez1 = new BezierCubicSub(width/2,height/2, width/4*3,height/4, width/4*3,height/2, width/2,height/2, color(0,0,100,100)); 
 bez2 = new BezierCubicSub(width/2,height/2, width/4,height/4, width/4,height/2, width/2,height/2, color(0,100,0,100));
bez3 = new BezierCubicSub(0,0, width/4, height/4, width/4, height/2, 0,0, color(0,0, 0, 100));
}
 
void draw() { 
 background(189, 237, 240);  
 bez1.display(); 
 bez2.display(); 
 man.display(); 
 //De y waarden van de ankerpunten van bez1 en bez2 bewegen zich tussen 0 en height 
 bez1.neerEnOp(); 
 bez2.opEnNeer(); 

//De ankerpunten van bez3 zijn (0,0)
 
pushMatrix(); 
 bez3.draaien(); 
 bez3.display(); 
 popMatrix(); 
} 

void keyPressed() { 
 if (key == 's') { 
 noLoop(); 
 } 
 if (key == 'r') { 
 loop(); 
 } 
}

De superclass met de twee constructors

 

 
class Super { 
 float x,y,b,h; 
 float cx1,cy1,cx2,cy2,ax2,ay2; 
 float yspeed = 2; 
 float snelhOpEnNeer = 2; 
 color c; 
 int i; 

Super(float x_, float y_, float b_, float h_, color c_) { 
 x = x_; y = y_; b = b_; h = h_; 
 c = c_; 
 }  
//toegevoegde constructor tbv de beziercubic subclass  
 Super(float x_, float y_, float cx1_, float cy1_, float cx2_, float cy2_, float ax2_, float ay2_, color c_) { 
 x = x_;  
 y = y_;  
 cx1 = cx1_; cy1 = cy1_; cx2 = cx2_; cy2 = cy2_; ax2 = ax2_; ay2 = ay2_;  
 c = c_; 
 }
void stijgen() { 
 y = y - yspeed; 
 if (y < 0) { 
 y = height; 
 } 
 }
void dalen() { 
 y = y + yspeed; 
 if (y > height) { 
 y = 0; 
 } 
 }
void trillen() { 
 x += random(-2, 2); 
 y += random(-2, 2); 
 }
void draaien() { 
 translate(width/2, height/2); 
 i = i+1; 
 rotate(radians(i)); 
 if (i == 360) i = 0; 
 } 
 void opEnNeer() {  
 y = y - snelhOpEnNeer;  
 if ((y < 0) || (y > height)) {  
 snelhOpEnNeer = snelhOpEnNeer* -1;  
 }  
 }  
 void neerEnOp() {  
 y = y + snelhOpEnNeer;  
 if ((y < 0) || (y > height)) {  
 snelhOpEnNeer = snelhOpEnNeer* -1;  
 }  
 }
void display() {         // Display in de superklasse om override te demonsteren 
 ellipse(x, y, 30, 10); 
 } 
}

 De subclass BezierCubicSub
 

class BezierCubicSub extends Super {
BezierCubicSub(float x_, float y_, float cx1_, float cy1_, float cx2_, float cy2_, float ax2_, float ay2_, color c_) {
super(x_, y_, cx1_, cy1_, cx2_, cy2_, ax2_, ay2_, c_); 
 }
void display() { 
 beginShape(); 
 fill(c); 
 vertex(x,y);  
 bezierVertex(cx1, cy1, cx2, cy2, ax2, ay2); 
 endShape(CLOSE); 
 } 
}

De subclass manSub

 

class ManSub extends Super {
ManSub(float x_, float y_, float b_, float h_, color c_) {  
 super(x_, y_, b_, h_, c_);  
 }  
 void display() {  
 rectMode(CENTER);  
 fill(c);  
 rect(x, y, b, h, 10); // lijf  
 fill(255);  
 ellipse(x, y-h, b, h); // hoofd  
 fill(255, 0, 0);  
 ellipse(x+b/4, y-h*5/4, b/6, h/12);    // oog re  
 ellipse(x-b/4, y-h*5/4, b/6, h/12);     // oog li  
 ellipse(x, y-h, b/6, h/8); // neus  
 fill(255);  
 rect(x, y-h/4*3, b/2, h/16, 30);     // mond  
 ellipse(x+b/2, y-h, b/6, h/6);       //  rechter oor  
 ellipse(x-b/2, y-h, b/6, h/6);        //  linker oor  
 rect(x-b/1.3, y-h/3, b/2, h/2);      //  linkerarm  
 rect(x+b/1.3, y-h/3, b/2, h/2);     //  rechterarm  
 rect(x-b/4, y+h, b/2.5, h);           //  linkerbeen  
 rect(x+b/4, y+h, b/2.5, h);          //  rechterbeen  
 }  
}