Volgorde van color in de constructor: c1 = rood, c2 = groen, c3 = blauw
Box_nh Box met vierkant als top terug naar de inleiding
De lengte van de zijde van het parallellogram is h1, is het tweede argument van de constructor hier: h1 = n;
het eerste argument van de constructor is de zijde van het vierkant ''zie ook de voorbeelden met box_nh''
class Box_nh extends Vormen {
Box_nh(float n_, float h1_, int d_, float x_, float y_, float hoek_, color c1_, color c2_, color c3_) {
super();
n = n_;
h1 = h1_;
x = x_;
y = y_;
hoek = hoek_;
c1 = c1_;
c2 = c2_;
c3 = c3_;
d = d_;
}
void display() {
// noStroke();
float a = sqrt(2*n*n);
pushMatrix();
translate(x, y);
rotate(radians(hoek));
beginShape();
//Vierkant
fill(c1);
if (d == 0) {vertex(-a/2, 0);vertex(0, -a/2);vertex(a/2, 0);vertex(0, a/2);}
if (d == 1) {vertex(0, -h1); vertex(a/2, -(h1+a/2));vertex(a, -h1);vertex(a/2,-(h1-a/2));}
if (d == 2) {vertex(0, 0);vertex(a/2, -a/2);vertex(a, 0);vertex(a/2, a/2);}
if (d == 3) {vertex(-a/2, a/2);vertex(0, 0);vertex(a/2, a/2);vertex(0, a);}
if (d == 4) {vertex(-a, 0);vertex(-a/2, -a/2);vertex(0, 0);vertex(-a/2, a/2);}
if (d == 5) {vertex(-a, -h1);vertex(-a/2, -(h1+a/2));vertex(0, -h1);vertex(-a/2, -(h1-a/2));}
if (d == 6) {vertex(-a/2, -(h1+a/2));vertex(0, -(h1+a));vertex(a/2,-(h1+a/2));vertex(0, -h1);}
if (d == 7) {vertex(-a/2, -a/2);vertex(0, -a);vertex(a/2, -a/2);vertex(0, 0);}
endShape(CLOSE);
beginShape();
fill(c2);
//parallel Links
if (d == 0) {vertex(-a/2, 0); vertex(-a/2, h1); vertex(0, h1+a/2); vertex(0, a/2);}
if (d == 1) {vertex(0, 0); vertex(0, -h1);vertex(a/2, -(h1-a/2));vertex(a/2, a/2);}
if (d == 2) {vertex(0, h1); vertex(0, 0); vertex(a/2, a/2); vertex(a/2, h1+a/2);}
if (d == 3) {vertex(-a/2, h1+a/2); vertex(-a/2, a/2); vertex(0, a); vertex(0, h1+a);}
if (d == 4) {vertex(-a, h1);vertex(-a, 0);vertex(-a/2, a/2);vertex(-a/2, h1+a/2);}
if (d == 5) {vertex(-a, 0);vertex(-a, -h1);vertex(-a/2, -(h1-a/2));vertex(-a/2, a/2);}
if (d == 6) {vertex(-a/2, -a/2);vertex(-a/2, -(h1+a/2));vertex(0, -h1);vertex(0, 0);}
if (d == 7) {vertex(-a/2, h1-a/2);vertex(-a/2, -a/2);vertex(0, 0);vertex(0, h1);}
endShape(CLOSE);
beginShape();
fill(c3);
//parallel rechts
if (d == 0) {vertex(0, a/2); vertex(0, h1+a/2); vertex(a/2, h1); vertex(a/2, 0);}
if (d == 1) {vertex(a/2, -(h1-a/2)); vertex(a, -h1); vertex(a, 0); vertex(a/2, a/2);}
if (d == 2) {vertex(a/2, a/2); vertex(a, 0); vertex(a, h1); vertex(a/2, h1+a/2);}
if (d == 3) {vertex(0, a); vertex(a/2, a/2); vertex(a/2, h1+a/2); vertex(0, h1+a);}
if (d == 4) {vertex(-a/2, a/2);vertex(0, 0);vertex(0, h1);vertex(-a/2, h1+a/2);}
if (d == 5) {vertex(-a/2, -(h1-a/2));vertex(0, -h1);vertex(0, 0);vertex(-a/2, a/2);}
if (d == 6) {vertex(0, -h1);vertex(a/2, -(h1+a/2));vertex(a/2, -a/2);vertex(0, 0);}
if (d == 7) {vertex(0, 0);vertex(a/2, -a/2);vertex(a/2, h1-a/2);vertex(0, h1);}
endShape(CLOSE);
popMatrix();
}
}
Schets, de kleinste box beweegt zich op en neer.
De schets maakt gebruik van objectmethodes van de superclass: "Vormen" en objecten van de subclass: "Box_nh"
bekijk de op en neer bewegende box op deze server
zie ook de alien die zich door de boxen op en neer beweegt
Vormen vorm0;
Vormen vorm1;
Vormen vorm3;
Vormen vorm4;
void setup() {
size(780, 560);
//fullScreen();
float x = width/2;
float y = height/2;
float n = height/10;
float z = sqrt(2*n*n);
vorm0 = new Box_nh(n*1.2, z, 0, x, y-2*n, 0, color(255, 0, 0, 100), color(0, 255, 0, 100), color(0, 0, 255, 100));
vorm1 = new Box_nh(n*1.4, z*1.1, 0, x, y, 0, color(255, 0, 0, 100), color(0, 255, 0, 100), color(0, 0, 255, 100));
vorm3 = new Box_nh(n*1.6, z*1.2, 0, x, y+2*n, 0, color(255, 0, 0, 100), color(0, 255, 0, 100), color(0, 0, 255, 100));
vorm4 = new Box_nh(n, z/4, 0, x, y, 0, color(255, 0, 0, 100), color(0, 255, 0, 100), color(0, 0, 255, 100));
}
void draw() {
background(#E6FBFF);
stroke(255, 0, 0);
line (width/2, 0, width/2, height);
line(0, height/2, width, height/2);
stroke(0);
vorm0.display();
vorm1.display();
vorm3.display();
vorm4.display();
if (key == 's') {
}
else
{
vorm4.yUpDown();
}
}