De parallogrammen met draaipunten 0 t/m 8, met hoogte en lengte = n
Parallellogram , "Paral" ga naar de roterende parallellogrammen terug naar de inleiding
schuine zijde a = sqrt(2*n*n); zie ook de classe "Paral" en "paral3d" in p5.js
Argumenten van de constructor: 1) n, hoogte, 2) l, lengte, 3) lr, links of rechts, 4) d, draaipunt, 5) x positie draaipunt, 6) y positie draaipunt, 7) hoek, 8) kleur
class Paral extends Vormen {
// 1 2 3 4 5 6 7 8
Paral(float n_, float l_, int lr_, int d_, float x_, float y_, float hoek_, color c1_) {
super();
n = n_; l = l_; lr = lr_; d = d_; x = x_; y = y_;
hoek = hoek_; c1 = c1_;
}
void display() {
fill(c1);
// noStroke();
pushMatrix();
translate(x, y);
rotate(radians(hoek));
beginShape();
if (d == 0 && lr == 1) {vertex(-(l/2+n/2),n/2);vertex(-(l/2-n/2),-n/2);vertex(n/2+l/2,-n/2);vertex(l/2-n/2,n/2);}
if (d == 1 && lr == 1) {vertex(0, 0); vertex(n,-n); vertex(l+n,-n); vertex(l, 0);}
if (d == 2 && lr == 1) {vertex(-n/2,n/2); vertex(n/2,-n/2); vertex(n/2+l,-n/2);vertex(l-n/2, n/2);}
if (d == 3 && lr == 1) {vertex(-n, n); vertex(0, 0); vertex(l, 0); vertex(l-n, n);}
if (d == 4 && lr == 1) {vertex(-(n+l/2),n); vertex(-l/2,0); vertex(l/2, 0); vertex(-n+l/2, n);}
if (d == 5 && lr == 1) {vertex(-(n+l), n); vertex(-l, 0); vertex(0, 0); vertex(-n,n);}
if (d == 6 && lr == 1) {vertex(-(n/2+l),n/2);vertex(-(l-n/2),-n/2);vertex(n/2,-n/2);vertex(-n/2, n/2);}
if (d == 7 && lr == 1) {vertex(-l, 0); vertex(-(l-n), -n); vertex(n, -n); vertex(0, 0);}
if (d == 8 && lr == 1) {vertex(-l/2,0); vertex(n-l/2, -n); vertex(n+l/2,-n);vertex(l/2, 0);}
if (d == 0 && lr == 0) {vertex(n/2-l/2, n/2);vertex(-(n/2+l/2),-n/2);vertex(l/2-n/2,-n/2);vertex(l/2+n/2,n/2);}
if (d == 1 && lr == 0) {vertex(0, 0); vertex(-n, -n); vertex(l-n, -n); vertex(l, 0);}
if (d == 2 && lr == 0) {vertex(n/2, n/2); vertex(-n/2, -n/2);vertex(l-n/2, -n/2);vertex(n/2+l, n/2);}
if (d == 3 && lr == 0) {vertex(n, n); vertex(0, 0); vertex(l, 0); vertex(n+l, n);}
if (d == 4 && lr == 0) {vertex(n-l/2, n); vertex(-l/2, 0); vertex(l/2, 0); vertex(n+l/2, n);}
if (d == 5 && lr == 0) {vertex(n-l, n); vertex(-l, 0); vertex(0, 0); vertex(n, n);}
if (d == 6 && lr == 0) {vertex(-(l-n/2),n/2);vertex(-(l+n/2),-n/2);vertex(-n/2,-n/2);vertex(n/2,n/2);}
if (d == 7 && lr == 0) {vertex(-l, 0); vertex(-(n+l), -n); vertex(-n, -n); vertex(0, 0);}
if (d == 8 && lr == 0) {vertex(-l/2, 0); vertex(-(n+l/2),-n); vertex(-n+l/2,-n);vertex(l/2, 0);}
endShape(CLOSE);
popMatrix();
}
}
De schets met 6 roterende parallellogrammen, hoogte en lengte = n. De schets maakt gebruik van "paral" , en de superclass "Vormen"
//animatie met 6 parallellogrammen met hoogten = n en lengte = n
Vormen[] vorm = new Vormen[8];
void setup() {
size(960, 540);
float x = width/2;
float y = height/2;
float n = height/8;
float h = n;
float l = n;
vorm[0] = new Paral(h, l, 0, 1, x-n, y, 0, color(255, 255, 0, 100));
vorm[1] = new Paral(h, l, 1, 7, x+n, y, 0, color(255, 255, 0, 100));
vorm[2] = new Paral(h, l, 1, 3, x-n, y, 0, color(255, 0, 0, 100));
vorm[3] = new Paral(h, l, 0, 5, x+n, y, 0, color(100, 0, 255, 100));
vorm[4] = new Paral(h, l, 1, 1, x-2*n, y-n,-45, color(0, 255, 0, 100));
vorm[5] = new Paral(h, l, 0, 7, x+2*n, y-n, 45, color(0, 100, 255, 100));
vorm[6] = new Paral(h, l, 0, 3, x-2*n, y+n, 45, color(255, 0, 200, 100));
vorm[7] = new Paral(h, l, 1, 5, x+2*n, y+n,-45, color(255, 0, 200, 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);
for (int i = 0; i < 8; i++)
vorm[i].display();
vorm[0].dpRotLi(vorm[0]);
vorm[1].dpRotRe(vorm[1]);
vorm[4].dpRotRe(vorm[4]);
vorm[5].dpRotLi(vorm[5]);
vorm[2].dpRotRe(vorm[2]);
vorm[3].dpRotLi(vorm[3]);
vorm[6].dpRotLi(vorm[6]);
vorm[7].dpRotRe(vorm[7]);
}
void keyPressed() {
if (key == 's') {
noLoop();
}
if (key == 'r') {
loop();
}
}