spiralen met rechthoeken als achtergond
spiraal met "lr" = 0 en "r" = 8 spiraal met "lr" = 1 en "r" = 8
De draaipunten staan in het (0,0) punt
gouden spiraal. "Spiraal_8gr_gk" terug naar de inleiding
De argumenten van de constructor
1) "n" = de straal van de eerste boog (boog van 90 graden in vierkant "n"), 2) "sw" = dikte van de lijnen, 3) "lr" = 0 spiraal naar links, "lr" = 1 spiraal naar rechts
4) "r" = aantal bogen (max 8), van groot naar klein, dus voor "r" = 1 is alleen de grootste boog zichtbaar.
5) en 6) x, y positie, 7) hoek, 8) kleur van de lijnen van de spiraal
class Spiraal_8gr_gk extends Vormen {
Spiraal_8gr_gk(float n_, int sw_, int lr_, int r_, float x_, float y_, float hoek_, color c1_) {
super();
n = n_; sw = sw_; lr = lr_;
x = x_; y = y_;
hoek = hoek_; c1 = c1_; r = r_;
}
void display() {
stroke(c1);
noFill();
strokeWeight(sw);
pushMatrix();
translate(x, y);
rotate(radians(hoek));
float phi= (1+sqrt(5))/2;
float nphi = n*phi;
float a = nphi-nphi/phi;
float b = n-n/phi; float c = a-a/phi; float d = b-b/phi; float e = c-c/phi;
float f = d-d/phi; float g = e-e/phi;
if ((r==1 || r==2 || r==3 || r==4 || r==5 || r==6 || r==7 || r==8) && lr==0)
arc(-n,0, n*2 ,n*2, PI+HALF_PI, PI+PI);
if ((r==1 || r==2 || r==3 || r==4 || r==5 || r==6 || r==7 || r==8 ) && lr==1)
arc(n,0, n*2,n*2, PI, PI+HALF_PI);
if ((r==2 || r==3 || r==4 || r==5 || r==6 || r==7 || r==8) && lr==0)
arc(-n,-b, a*2 ,a*2,PI, PI+HALF_PI);
if ((r==2 || r==3 || r==4 || r==5 || r==6 || r==7 || r==8) && lr==1)
arc(n,-b, a*2,a*2, PI+HALF_PI , PI+PI);
if ((r==3 || r==4 || r==5 || r==6 || r==7 || r==8) && lr==0)
arc(-(n+c),-b, b*2 ,b*2, HALF_PI, PI);
if ((r==3 || r==4 || r==5 || r==6 || r==7 || r==8) && lr==1)
arc(n+c,-b, b*2,b*2, 0, HALF_PI );
if ((r==4 || r==5 || r==6 || r==7 || r==8) && lr==0)
arc(-(n+c),-c, c*2 ,c*2, 0, HALF_PI);
if ((r==4 || r==5 || r==6 || r==7 || r==8) && lr==1)
arc(n+c,-c, c*2,c*2, HALF_PI, PI );
if ((r==5 || r==6 || r==7 || r==8) && lr==0)
arc(-(n+d),-c, d*2 ,d*2, PI+HALF_PI, PI+PI);
if ((r==5 || r==6 || r==7 || r==8) && lr==1)
arc(n+d,-c, d*2,d*2,PI, PI+HALF_PI );
if ((r==6 || r==7 || r==8) && lr==0)
arc(-(n+d),-(c+f), e*2 ,e*2, PI, PI+HALF_PI);
if ((r==6 || r==7 || r==8) && lr==1)
arc(n+d,-(c+f), e*2,e*2, PI+HALF_PI, PI+PI );
if ((r==7 || r==8) && lr==0)
arc(-(n+d+g),-(c+f), f*2 ,f*2, HALF_PI, PI);
if ((r==7 || r==8) && lr==1)
arc(n+d+g,-(c+f), f*2,f*2, 0, HALF_PI);
if ((r==8) && lr==0)
arc(-(n+d+g),-(c+g), g*2 ,g*2, 0, HALF_PI);
if ((r==8) && lr==1)
arc(n+d+g,-(c+g), g*2,g*2, HALF_PI, PI);
popMatrix();
strokeWeight(1);
}
}
Animatie met 4 spiralen, de schets maakt gebruik van de class "Spiraal_8gr_gk" en de superclass "Vormen"
Bekijk de roterende spiralen
Vormen vorm0;
Vormen vorm1;
Vormen vorm2;
Vormen vorm3;
void setup() {
size(780, 560);
float x = width/2;
float y = height/2;
float n = height/4;
vorm0 = new Spiraal_8gr_gk(n, 2, 1, 8, x+n, y, 90, color(255,0,0));
vorm1 = new Spiraal_8gr_gk(n, 2, 0, 8, x-n, y, -90, color(255,0,0));
vorm2 = new Spiraal_8gr_gk(n, 2, 1, 8, x-n, y, 180, color(255,0,0));
vorm3 = new Spiraal_8gr_gk(n, 2, 0, 8, x+n, y,-180, color(255,0,0));
}
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();
vorm0.dpRotLi(vorm0);
vorm1.dpRotRe(vorm1);
vorm2.dpRotLi(vorm2);
vorm3.dpRotRe(vorm3);
}
void keyPressed() {
if (key == 's') {
noLoop();
}
if (key == 'r') {
loop();
}
}