![]() |
![]() |
![]() |
6 vliegers rond een vijfhoek. terug naar de inleiding
De vliegers zijn hier pijlen want het derde argument in de constructor is negatief bekijk de vliegers rond de vijfhoek
Bekijk de vliegers rond de vijhoeken in overprojectie De code staat onder deze schets
De schets maakt gebruik objecten de van classes "Vlieger" , "Vhoek_n5" en de superclass "Vormen"
Enkele toetsfuncties
Met toets "2" draaien de vliegers in draaipunt 5 rond de vijfhoek.
Met toets "1" draaien ze weer in draaipunt 1 en wordt de vijfhoek weer ingeschakeld.
Met toets "3" wordt de vijfhoek uitgeschakeld, door een niet bestaand draaipunt in te voeren zie regel 64
Met toets "s" stopt en met de overige toetsen start de rotatie
Vormen [] vorm;
int dpVl = 1;
int dpVhoek = 0;
void setup() {
size(1920, 1080);
float x = width/2;
float y = height/2;
float n = height/6;
float rl = sqrt(50+10*sqrt(5))*n/10;
float rk = sqrt(25+10*sqrt(5))*n/10;
float h = (rl+rk);
float nphi = ((1+sqrt(5))/2)*n;
float phi = ((1+sqrt(5))/2);
float k = rl/2*(3-phi);
float bl = rl/(2*phi);
vorm = new Vormen[7];
vorm[0] = new Vlieger(nphi, h+k, -k, dpVl, x, y-rl, 0, color(237,230,86,75));
vorm[1] = new Vlieger(nphi, h+k, -k, dpVl, x, y-rl, 0, color(237,86,91,75));
vorm[2] = new Vlieger(nphi, h+k, -k, dpVl, x+nphi/2, y-bl, 72, color(63,186,229,75));
vorm[3] = new Vlieger(nphi, h+k, -k, dpVl, x+n/2, y+rk, 144, color(76,229,63,75));
vorm[4] = new Vlieger(nphi, h+k, -k, dpVl, x-n/2, y+rk,-144, color(76,229,63,75));
vorm[5] = new Vlieger(nphi, h+k, -k, dpVl, x-nphi/2, y-bl, -72, color(63,186,229,75));
vorm[6] = new Vhoek_n5(n, dpVhoek, x, y, 0, color(100, 200, 0, 50));
}
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 < 7; i++)
{
vorm[i].display();
}
if (key == 's') {
}
else
{
vorm[0].dpRotRe(vorm[0]);
vorm[1].dpRotLi(vorm[1]);
vorm[2].dpRotLi(vorm[2]);
vorm[3].dpRotRe(vorm[3]);
vorm[4].dpRotLi(vorm[4]);
vorm[5].dpRotRe(vorm[5]);
}
}
void keyPressed() {
if (key == '1') {
dpVl = 1;
dpVhoek = 0;
setup();
}
if (key == '2') {
dpVl = 5;
setup();
}
if (key == '3') {
dpVhoek = 7;
setup();
}
}
De vliegers in overprojectie
Door in de draw functie de code door onderstaande code te vervangen worden de vliegers in overprojectie getoond.
background(#E6FBFF); naar het setup deel verplaatsen.
Zo worden de vliegers telkens na 30 frameCounts getekend, terwijl de rotaties gewoon doorgaan.
void draw() {
int n = 30;
if (frameCount == n)
for (int i = 0; i < 7; i++)
{
vorm[i].display();
frameCount = 0;
}
if (key == 's') {
}
else
{
vorm[0].dpRotRe(vorm[0]);
vorm[1].dpRotLi(vorm[1]);
vorm[2].dpRotLi(vorm[2]);
vorm[3].dpRotRe(vorm[3]);
vorm[4].dpRotLi(vorm[4]);
vorm[5].dpRotRe(vorm[5]);
}
}
void keyPressed() {
if (key == '1') {
dpVl = 1;
dpVhoek = 0;
setup();
}
if (key == '2') {
dpVl = 5;
setup();
}
if (key == '3') {
dpVhoek = 7;
setup();
}
}