
draaipunten 0 t/m 8 met h1 = n/2 en h2 = n
Vlieger terug naar de inleiding onder de class staan de 2 voorbeelden zie ook het voorbeeld acht pijlen rond achthoek
bekijk de draaien vormen van de schets in voorbeeld 1
met toetsen 2 t/m 5 verander je de draaipunten van de vierkanten
met toets 6 t/m 9 verander je de draaipunten van de vliegers
toets 1 reset de oorspronkelijke toestand
argumenten van de constructor
Met de eerste drie argumenten van de constructor bepaal je de grootte en vorm van de vlieger.
1) "n" is de lengte van de korte diagonaal
2) "h1" is de lengte van de top naar de korte diagonaal
3) "h2" is de lengte van de kort diagonaal naar de punt van de vlieger. Dus de lange diagonaal is h1+h2.
4) draaipunt d, 5) x positie, 6) y positie, 7) hoek, 8) kleur
met h1 = h2 = n/2 is de vlieger een vierkant
met h1 = negatief ontstaat een naar beneden gerichte pijl
met h2 = negatief ontstaat een naar boven gerichte pijl
met h1 = h2 = n ontstaat een ruit
met h1 = h2 = sqrt(3*n*n/4); ontstaat een ruit met zijden en korte diagonaal = n
Dus je kan met de "Vlieger" class vliegers, vierkanten, ruiten en pijlen maken.
class Vlieger extends Vormen {
Vlieger(float n_, float h1_, float h2_, int d_, float x_, float y_, float hoek_, color c1_) {
super();
n = n_;
h1 = h1_;
h2 = h2_;
x = x_;
y = y_;
hoek = hoek_;
c1 = c1_;
d = d_;
}
void display() {
fill(c1);
// noStroke();
pushMatrix();
translate(x, y);
rotate(radians(hoek));
beginShape();
if (d == 0) {vertex(0, h2);vertex(-n/2, 0);vertex(0, -h1);vertex(n/2, 0);}
if (d == 1) {vertex(0, 0);vertex(-n/2, -h2);vertex(0, -(h1+h2));vertex(n/2, -h2); }
if (d == 2) {vertex(n/4, h2/2); vertex(-n/4, -h2/2);vertex(n/4, -(h2/2+h1));vertex(3*n/4, -h2/2);}
if (d == 3) {vertex(n/2, h2);vertex(0, 0);vertex(n/2, -h1); vertex(n, 0);}
if (d == 4) {vertex(n/4, h2+h1/2);vertex(-n/4, h1/2);vertex(n/4, -h1/2);vertex(3*n/4, h1/2);}
if (d == 5) {vertex(0, h1+h2);vertex(-n/2, h1);vertex(0, 0);vertex(n/2, h1);}
if (d == 6) {vertex(-n/4, h1/2+h2);vertex(-3*n/4, h1/2);vertex(-n/4, -h1/2);vertex(n/4, h1/2);}
if (d == 7) {vertex(-n/2, h2);vertex(-n, 0);vertex(-n/2, -h1);vertex(0, 0);}
if (d == 8) {vertex(-n/4, h2/2);vertex(-3*n/4, -h2/2);vertex(-n/4, -(h2/2+h1));vertex(n/4, -h2/2);}
endShape(CLOSE);
popMatrix();
}
}
voorbeeld 1
In deze schets worden, mbv de class "Vlieger" ,een pijl, (vorm 0) twee vierkanten met zijden 2*a (vormen 1 en 2) en vier vliegers (vormen 3 t/m 6) geconstrueerd.
In de class "Vlieger" is de coderegel "strokeWeight(2);" toegevoegd zodat de lijnen dikker zijn
De schets maakt ook gebruik van de superclass ¨Vormen¨
bekijk de draaien vormen
met toetsen 2 t/m 5 verander je de draaipunten van de vierkanten
met toets 6 t/m 9 verander je de draaipunten van de vliegers
toets 1 reset de oorspronkelijke toestand
Vormen [] vorm;
int dp1 = 0;
int dp2 = 0;
void setup() {
size(980, 760);
float x = width/2;
float y = height/2;
float n = height/11;
vorm = new Vormen[7];
vorm[0] = new Vlieger(4*n,-2*n, 6*n, 1, x, y+3*n, 0, color(242,105,117,100));
vorm[1] = new Vlieger(4*n, 2*n, 2*n, 1+dp1, x, y-n, 0, color(37,229,224,100));
vorm[2] = new Vlieger(4*n, 2*n, 2*n, 1+dp1, x, y-n, 0, color(94,189,154,100));
vorm[3] = new Vlieger(2*n, 3*n, 2*n, 7-dp2, x-n, y, 0, color(90,150,100,100));
vorm[4] = new Vlieger(2*n, 3*n, 2*n, 3+dp2, x+n, y, 0, color(105,242,216,100));
vorm[5] = new Vlieger(2*n, 2*n, 3*n, 5-dp2, x, y, 90, color(203,242,105,100));
vorm[6] = new Vlieger(2*n, 2*n, 3*n, 5-dp2, x, y, -90, color(203,230,100,100));
}
void draw() {
background(#E6FBFF);
for (int i = 0; i < 7; i++)
{
vorm[i].display();
}
if (key == 's') {
}
else
{
vorm[1].dpRotRe(vorm[1]);
vorm[2].dpRotLi(vorm[2]);
vorm[3].dpRotRe(vorm[3]);
vorm[4].dpRotLi(vorm[4]);
vorm[5].dpRotLi(vorm[5]);
vorm[6].dpRotRe(vorm[6]);
}
}
void keyPressed() {
if (key == '1') {
dp1 = 0; dp2 = 0;
setup();
}
if (key == '2') {
dp1 = 1;
setup();
}
if (key == '3') {
dp1 = 2;
setup();
}
if (key == '4') {
dp1 = 3;
setup();
}
if (key == '5') {
dp1 = 4;
setup();
}
if (key == '6') {
dp2 = 1;
setup();
}
if (key == '7') {
dp2 = 2;
setup();
}
if (key == '8') {
dp2 = 3;
setup();
}
if (key == '9') {
dp2 = 4;
setup();
}
}
voorbeeld 2
mbv de class "Vlieger" worden vier pijlen geconstrueerd.
enkele toetsfuncties
Met toetsen 1 t/m 3 verander je de draaipunten.
Met toets "s" stopt, en met toets "r" start de animatie.
Vormen [] vorm;
int dp = 1;
void setup() {
size(780, 560);
float x = width/2;
float y = height/2;
float n = height/4;
float a = sqrt(2*n*n);
vorm = new Vormen[7];
vorm[0] = new Vlieger(a, -a/2, 1.5*a, dp, x, y-n/2, 135, color(255,255,0,100));
vorm[1] = new Vlieger(a, -a/2, 1.5*a, dp, x, y-n/2,-135, color(255,0,0,100));
vorm[2] = new Vlieger(a, -a/2, 1.5*a, dp, x, y+n/2, 45, color(0,0,255,100));
vorm[3] = new Vlieger(a, -a/2, 1.5*a, dp, x, y+n/2, -45, color(0,255,0,100));
}
void draw() {
background(#E6FBFF);
for (int i = 0; i < 4; i++)
{
vorm[i].display();
}
vorm[0].dpRotRe(vorm[0]);
vorm[1].dpRotLi(vorm[1]);
vorm[2].dpRotLi(vorm[2]);
vorm[3].dpRotRe(vorm[3]);
}
void keyPressed() {
if (key == 's') {
noLoop();
}
if (key == 'r') {
loop();
}
if (key == '1') {
dp = 1;
setup();
}
if (key == '2') {
dp = 3;
setup();
}
if (key == '3') {
dp = 5;
setup();
}
}