Volgorde van color in de constructor: c1 = rood, c2 = groen, c3 = blauw
Box met ruit als top terug naar de inleiding
float hn = sqrt(3*n*n/4) is de hoogtelijn van de gelijkzijdige driehoek, zie ook de class ''Ruit'' , en het voorbeeld drie boxen en tien ruiten
Eerste argument ¨n¨ van de constructor is de lengte van de zijde van de ruit
Tweede argument ¨h1¨ van de constructor is de hoogte van de box
Als n = h1 is de box samengesteld met 3 ruiten
class Box extends Vormen {
Box(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 hn = sqrt(3*n*n/4);
pushMatrix();
translate(x, y);
rotate(radians(hoek));
beginShape();
//ruit boven
fill(c1);
if (d == 0) {vertex(-hn, 0);vertex(0, -n/2);vertex(hn, 0);vertex(0, n/2);}
if (d == 1) {vertex(0, -(h1)); vertex(hn, -(h1+n/2));vertex(2*hn, -(h1));vertex(hn, -(h1-n/2));}
if (d == 2) {vertex(0, 0);vertex(hn, -n/2);vertex(2*hn, 0);vertex(hn, n/2);}
if (d == 3) {vertex(-hn, n/2);vertex(0, 0);vertex(hn, n/2);vertex(0, n);}
if (d == 4) {vertex(-2*hn, 0);vertex(-hn, -n/2);vertex(0, 0);vertex(-hn, n/2);}
if (d == 5) {vertex(-2*hn, -h1);vertex(-hn, -(h1+n/2));vertex(0, -h1);vertex(-hn, -(h1-n/2));}
if (d == 6) {vertex(-hn,-(h1+n/2));vertex(0, -(h1+n));vertex(hn, -(h1+n/2));vertex(0, -h1);}
if (d == 7) {vertex(-hn,-n/2);vertex(0, -n);vertex(hn, -n/2);vertex(0, 0);}
endShape(CLOSE);
beginShape();
fill(c2);
//ruit links
if (d == 0) {vertex(-hn, h1); vertex(-hn, 0); vertex(0, n/2); vertex(0, n/2+h1);}
if (d == 1) {vertex(0, 0); vertex(0, -h1); vertex(hn, -(h1-n/2)); vertex(hn, n/2);}
if (d == 2) {vertex(0, h1); vertex(0, 0); vertex(hn, n/2); vertex(hn, h1+n/2);}
if (d == 3) {vertex(-hn, h1+n/2); vertex(-hn, n/2); vertex(0, n); vertex(0, n+h1);}
if (d == 4) {vertex(-2*hn, h1);vertex(-2*hn, 0);vertex(-hn, n/2);vertex(-hn, n/2+h1);}
if (d == 5) {vertex(-2*hn, 0);vertex(-2*hn, -h1);vertex(-hn, -(h1-n/2));vertex(-hn,n/2);}
if (d == 6) {vertex(-hn, -n/2);vertex(-hn, -(h1+n/2));vertex(0, -h1);vertex(0, 0);}
if (d == 7) {vertex(-hn, h1-n/2); vertex(-hn, -n/2); vertex(0, 0); vertex(0, h1);}
endShape(CLOSE);
beginShape();
fill(c3);
//ruit rechts
if (d == 0) {vertex(0, n/2); vertex(hn, 0); vertex(hn, h1); vertex(0, n/2+h1);}
if (d == 1) {vertex(hn, -(h1-n/2)); vertex(2*hn, -h1);vertex(2*hn, 0);vertex(hn, n/2);}
if (d == 2) {vertex(hn, n/2); vertex(2*hn, 0); vertex(2*hn, h1); vertex(hn, h1+n/2);}
if (d == 3) {vertex(0, n); vertex(hn, n/2); vertex(hn, h1+n/2); vertex(0, h1+n);}
if (d == 4) {vertex(-hn, n/2);vertex(0, 0);vertex(0, h1);vertex(-hn, n/2+h1);}
if (d == 5) {vertex(-hn, -(h1-n/2));vertex(0, -h1);vertex(0, 0);vertex(-hn, n/2);}
if (d == 6) {vertex(0, -h1);vertex(hn, -(h1+n/2));vertex(hn, -n/2);vertex(0, 0);}
if (d == 7) {vertex(0, 0); vertex(hn, -n/2); vertex(hn, h1-n/2); vertex(0, h1);}
endShape(CLOSE);
popMatrix();
}
}
7 over elkaar roterende boxen zie de rotaties
Vormen vorm0;
Vormen vorm1;
Vormen vorm2;
Vormen vorm3;
Vormen vorm4;
Vormen vorm5;
Vormen vorm6;
void setup() {
size(780, 560);
float x = width/2;
float y = height/2;
float n = height/20;
vorm0 = new Box(n, 7, x, y, 0, color(255, 0, 0, 50), color(0, 255, 0, 50), color(0, 0, 255, 50));
vorm1 = new Box(n*2, 7, x, y, 60, color(255, 0, 0, 50), color(0, 255, 0, 50), color(0, 0, 255, 50));
vorm2 = new Box(n*3, 7, x ,y, 0, color(255, 0, 0, 50), color(0, 255, 0, 50), color(0, 0, 255, 50));
vorm3 = new Box(n*4, 7, x, y, 60, color(255, 0, 0, 50), color(0, 255, 0, 50), color(0, 0, 255, 50));
vorm4 = new Box(n*5, 7, x, y, 0, color(255, 0, 0, 50), color(0, 255, 0, 50), color(0, 0, 255, 50));
vorm5 = new Box(n*6, 7, x, y, 60, color(255, 0, 0, 50), color(0, 255, 0, 50), color(0, 0, 255, 50));
vorm6 = new Box(n*7, 7, x, y, 0, color(255, 0, 0, 50), color(0, 255, 0, 50), color(0, 0, 255, 100));
}
void draw() {
background(#E6FBFF);
//assenstelsel
stroke(255, 0, 0);
line (width/2, 0, width/2, height);
line(0, height/2, width, height/2);
stroke(0);
vorm0.display();
vorm1.display();
vorm2.display();
vorm3.display();
vorm4.display();
vorm5.display();
vorm6.display();
if (key == 's') {
}
else
{
vorm6.dpRotRe(vorm6);
vorm4.dpRotLi(vorm4);
vorm3.dpRotRe(vorm3);
vorm1.dpRotLi(vorm1);
}
}