hoekbalk, "Hoek3d_na3n" terug naar de inleiding
hoekbalk: n breed, a = sqrt(2n*n*); diep en 3n lang
class Hoek3d_na3n extends Vormen {
Hoek3d_na3n(float n_, int d_, float x_, float y_, float hoek_, color c1_, color c2_, color c3_, color c4_, color c5_) {
super();
n = n_;
x = x_;
y = y_;
hoek = hoek_;
c1 = c1_; c2 = c2_; c3 = c3_; c4 = c4_; c5 = c5_;
d = d_;
}
void display() {
pushMatrix();
translate(x, y);
rotate(radians(hoek));
fill(c1);
beginShape();
//hoek
float a = sqrt(2*n*n);
// noStroke();
if (d == 2) {vertex(a/2, a/2); vertex(0, 0); vertex(3*a/2, -3*a/2); vertex(3*a, 0); vertex(5*a/2, a/2); vertex(3*a/2, -a/2);}
if (d == 4) {vertex(-a, 2*a); vertex(-3*a/2, 3*a/2); vertex(0, 0); vertex(3*a/2, 3*a/2); vertex(a, 2*a); vertex(0, a);}
if (d == 6) {vertex(-5*a/2, a/2); vertex(-3*a, 0); vertex(-3*a/2, -3*a/2); vertex(0, 0); vertex(-a/2, a/2); vertex(-3*a/2, -a/2);}
endShape(CLOSE);
fill(c2);
//paral 2naLi
beginShape();
if (d == 2) {vertex(5*a/2, 3*a/2); vertex(3*a/2, a/2); vertex(3*a/2, -a/2); vertex(5*a/2, a/2);}
if (d == 4) {vertex(a, 3*a); vertex(0, 2*a);vertex(0,a); vertex(a, 2*a);}
if (d == 6) {vertex(-a/2, 3*a/2); vertex(-3*a/2, a/2); vertex(-3*a/2, -a/2); vertex(-a/2, a/2);}
endShape(CLOSE);
//paral 2naRe
fill(c3);
beginShape();
if (d == 2) {vertex(a/2, 3*a/2); vertex(a/2, a/2);vertex(3*a/2,-a/2); vertex(3*a/2, a/2);}
if (d == 4) {vertex(-a, 3*a); vertex(-a, 2*a); vertex(0, a); vertex(0, 2*a);}
if (d == 6) {vertex(-5*a/2, 3*a/2); vertex(-5*a/2, a/2);vertex(-3*a/2, -a/2); vertex(-3*a/2, a/2);}
endShape(CLOSE);
//paral naLi
beginShape();
fill(c4);
if (d == 2) {vertex(a/2, 3*a/2); vertex(0, a); vertex(0, 0); vertex(a/2, a/2);}
if (d == 4) {vertex(-a, 3*a); vertex(-3*a/2, 5*a/2); vertex(-3*a/2, 3*a/2); vertex(-a, 2*a);}
if (d == 6) {vertex(-5*a/2, 3*a/2); vertex(-3*a, a); vertex(-3*a, 0); vertex(-5*a/2, a/2);}
endShape(CLOSE);
//paral naRe
fill(c5);
beginShape();
if (d == 2) {vertex(5*a/2, 3*a/2); vertex(5*a/2, a/2); vertex(3*a, 0); vertex(3*a, a);}
if (d == 4) {vertex(a, 3*a); vertex(a, 2*a); vertex(3*a/2, 3*a/2); vertex(3*a/2, 5*a/2);}
if (d == 6) {vertex(-a/2, 3*a/2); vertex(-a/2, a/2); vertex(0, 0); vertex(0, a);}
endShape(CLOSE);
popMatrix();
}
}
Schets met 6 hoeken3d, 0, 60, 120, 180, 240 en 300 graden
de schets maakt gebruik van de superclass: "Vormen" en de subclass: "Hoek3d_na3n"
Bekijk de roterende, en op en neer bewegende, hoekbalken op de server.
Vormen [] vorm;
void setup() {
size(780, 540);
float x = width/2;
float y = height/2;
float n = height/20;
int ch1 = color(255,0,0,100);
int ch2 = color(0,255,0,100);
int ch3 = color(0,0,255,100);
int ch4 = color(255,255,0,100);
int ch5 = color(255,0,255,100);
vorm = new Vormen[6];
vorm[0] = new Hoek3d_na3n(n*1.2, 4, x, y, 0,ch1,ch2,ch3,ch4,ch5);
vorm[1] = new Hoek3d_na3n(n, 4, x, y, 60, ch1,ch2,ch3,ch4,ch5);
vorm[2] = new Hoek3d_na3n(n*1.2, 4, x, y, 120, ch1,ch2,ch3,ch4,ch5);
vorm[3] = new Hoek3d_na3n(n, 4, x, y, 180,ch1,ch2,ch3,ch4,ch5);
vorm[4] = new Hoek3d_na3n(n*1.2, 4, x, y, 240,ch1,ch2,ch3,ch4,ch5);
vorm[5] = new Hoek3d_na3n(n, 4, x, y, 300,ch1,ch2,ch3,ch4,ch5);
}
void draw() {
background(#E6FBFF);
// background(0);
stroke(255, 0, 0);
line (width/2, 0, width/2, height);
line (0, height/2, width, height/2);
stroke(0);
for (int i = 0; i < 6; i++)
{
vorm[i].display();
}
vorm[1].dpRotLi(vorm[1]);
vorm[3].dpRotRe(vorm[3]);
vorm[5].dpRotLi(vorm[5]);
vorm[3].xLiRe();
vorm[5].yDownUp();
vorm[1].yUpDown();
vorm[1].xReLi();
}
void keyPressed() {
if (key == 's') {
noLoop();
}
if (key == 'r') {
loop();
}
}