de linker en rechter driehoek, "r" = 9

de linker en rechter driehoek, "r" = 9

 

kleinste driehoeken zijn zichtbaar,  "r" = 1

kleinste driehoeken zijn zichtbaar, "r" = 1

 

li driehoek 18 gr, re driehoek<br> -18 gr rotatie, "r" = 7

li driehoek 18 gr, re driehoek -18 gr rotatie, "r" = 7

 

 

rode drieh x-n zwarte drieh x+n

rode drieh x-n zwarte drieh x+n

 

 

 

 

 

gouden driehoeken.  "Drieh_9g_kg"              terug naar de inleiding
 
Door de 9 gulden driehoeken (36,72,72) ontstaan 8 gulden gnomen (36,36,108)
"9g" dwz 9 gulden driehoeken, "kg" dwz van klein naar groot, zie argument 4
 
De argumenten van de constructor

1) "n" = de basis  van de negende, grootste, driehoek, 2) "sw" = dikte van de lijnen, 3) "lr" = 0 driehoek naar links, "lr" = 1 driehoek naar rechts

4) "r" = aantal driehoeken (max 9), van klein naar groot, dus voor "r" = 1 is alleen de kleinste driehoek zichtbaar.

5) en 6)  x, y positie van het punt linksonder voor de rechter, en rechtsonder voor de linker driehoek, dit is ook het draaipunt,

7) hoek, 8) kleur van de driehoeken

 

 

class Drieh_9g_kg extends Vormen {   
    
  Drieh_9g_kg(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);  
    strokeWeight(sw);  
    noFill();  
    pushMatrix();   
    translate(x, y);   
    rotate(radians(hoek));     
    float phi= (1+sqrt(5))/2;  
    float nphi = n*phi;   
    float h1  = nphi*sin(radians(72)); float a   = nphi-nphi/phi; 
    float ax1 = a*cos(radians(72));    float ay1 = a*sin(radians(72)); 
    float ax2 = a*cos(radians(36));    float ay2 = a*sin(radians(36)); 
    float b = n-n/phi; float c = a-a/phi; 
    float bx1 = (a-c)*cos(radians(36)); float by1 = (a-c)*sin(radians(36)); 
    float d = b-b/phi; float f = d-d/phi; 
    float ex1 = (ax2-d)-f*cos(radians(72)); float ey1 = ay2-f*sin(radians(72)); 
    float e = c-c/phi; float fx1 = ax2-(d+e/2);  float fy1 = ay2-f*sin(radians(36)); 
    float h = f-f/phi; float gx1 = fx1+h*cos(radians(36)); float gy1 = fy1+h*sin(radians(36));     
    beginShape();   //Driehoek nphi 
    if (r==9 && lr==0)   
    {vertex(0,0); vertex(-ax2,-h1); vertex(-n,0);}   
    endShape(CLOSE);  
    beginShape();      
    if (r==9 && lr==1)      
    {vertex(0,0); vertex(ax2,-h1); vertex(n, 0);}      
    endShape(CLOSE);     
    beginShape(); //driehoek n 
    if ((r==8 || r==9) && lr==0)  
    {vertex(0,0); vertex(-ax1,-ay1); vertex(-n,0);}  
    endShape(CLOSE);      
    beginShape();  
    if ((r==8 || r==9) && lr==1)  
    {vertex(0,0); vertex(ax1,-ay1); vertex(n,0);}       
    endShape(CLOSE);          
    beginShape();  //driehoek a  
    if ((r==7|| r==8 || r==9) && lr==0)   
    {vertex(0, 0); vertex(-ax1, -ay1); vertex(-ax2, -ay2);}    
    endShape(CLOSE);      
    beginShape();  
    if ((r==7|| r==8 || r==9) && lr==1)   
    {vertex(0, 0); vertex(ax1, -ay1); vertex(ax2, -ay2);}   
    endShape(CLOSE);           
    beginShape(); //driehoek b   
    if ((r==6 || r==7|| r==8 || r==9) && lr==0)   
    {vertex(-bx1,-by1);vertex(-ax1,-ay1); vertex(-ax2,-ay2);}   
    endShape(CLOSE);        
    beginShape();      
    if ((r==6 || r==7|| r==8 || r==9) && lr==1)   
    {vertex(bx1,-by1);vertex(ax1,-ay1); vertex(ax2,-ay2);}   
    endShape(CLOSE);     
    beginShape();  //driehoek c 
    if ((r==5 || r==6 || r==7|| r==8 || r==9) && lr==0)   
     {vertex(-bx1,-by1); vertex(-(ax2-c),-ay2); vertex(-ax2,-ay2);}    
    endShape(CLOSE); 
    beginShape();  
    if ((r==5 || r==6 || r==7 || r==8 || r==9) && lr==1)   
    {vertex(bx1,-by1); vertex(ax2-c,-ay2); vertex(ax2,-ay2);}    
    endShape(CLOSE);          
    beginShape(); //driehoek d  
    if ((r==4 || r==5 || r==6 || r==7|| r==8 || r==9) && lr==0)   
    {vertex(-bx1, -by1);vertex(-(ax2-c),-ay2);vertex(-(ax2-d),-ay2);}       
    endShape(CLOSE);       
    beginShape();  
    if ((r==4 || r==5 || r==6 || r==7|| r==8 || r==9) && lr==1)   
    {vertex(bx1, -by1);vertex(ax2-c,-ay2);vertex(ax2-d, -ay2);}          
    endShape(CLOSE);             
    beginShape(); //driehoek e 
    if ((r==3 || r==4 || r==5 ||r==6 ||r==7 || r==8 || r==9) && lr==0)   
    {vertex(-ex1,-ey1); vertex(-(ax2-c),-ay2);vertex(-(ax2-d),-ay2);}    
    endShape(CLOSE);      
    beginShape();  
    if ((r==3 || r==4 || r==5 ||r==6 || r==7 || r==8 || r==9) && lr==1)   
    {vertex(ex1,-ey1); vertex(ax2-c,-ay2);vertex(ax2-d,-ay2);}          
    endShape(CLOSE);          
    beginShape(); //driehoek f   
    if ((r==2 || r==3 || r==4 || r==5 || r==6 || r==7 ||r==8 || r==9) && lr==0)   
    {vertex(-fx1, -fy1); vertex(-(ax2-d), -ay2);vertex(-ex1, -ey1);}    
    endShape(CLOSE);      
    beginShape();  
    if ((r==2 || r==3 || r==4 || r==5 || r==6 || r==7 || r==8 || r==9) && lr==1)   
    {vertex(fx1, -fy1); vertex(ax2-d, -ay2);vertex(ex1, -ey1);}          
    endShape(CLOSE);              
    beginShape(); //Driehoek g 
    if ((r==1 || r==2 || r==3 || r==4 || r==5 || r==6 || r==7|| r==8 || r==9) && lr==0)   
    {vertex(-ex1,-ey1);vertex(-fx1,-fy1);vertex(-gx1,-gy1);}       
    endShape(CLOSE);       
    beginShape();  
    if ((r==1 || r==2 || r==3 || r==4 || r==5 || r==6 || r==7|| r==8 || r==9) && lr==1)   
    {vertex(ex1,-ey1);vertex(fx1,-fy1);vertex(gx1,-gy1);}          
    endShape(CLOSE);   
    popMatrix();   
    strokeWeight(1);  
  }   
}
 
Animatie met 4 roterende driehoeken en 2 vijfhoeken
De schets maakt gebruik van de class  "Drieh_9g_kg"  en "Vhoek_n5" en de superclass  "Vormen"
 
Bekijk de gouden animatie
 
 

Vormen vorm0;   
Vormen vorm1;    
Vormen vorm2;  
Vormen vorm3; 
Vormen vorm4; 
Vormen vorm5; 
 
void setup() {    
  size(780, 560);   
 // fullScreen(); 
  float x = width/2;    
  float y = height/2;    
  float n = height/4;  
  vorm0 = new Drieh_9g_kg(n, 1, 1, 9, x, y, 0, color(255,0,0)); 
  vorm1 = new Drieh_9g_kg(n, 1, 0, 9 ,x, y, 0, color(0)); 
  vorm2 = new Drieh_9g_kg(n, 1, 1, 9, x, y, 180, color(255,0,0)); 
  vorm3 = new Drieh_9g_kg(n, 1, 0, 9 ,x, y, 180, color(0)); 
  vorm4 = new Vhoek_n5(n, 3, x, y, 0, color(0));  
  vorm5 = new Vhoek_n5(n, 3, x, y, 180, color(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(); 
  vorm4.display(); 
  vorm5.display(); 
   
  vorm0.dpRotLi(vorm0); 
  vorm1.dpRotRe(vorm1); 
  vorm2.dpRotLi(vorm2); 
  vorm3.dpRotRe(vorm3); 
}   
 
void keyPressed() {      
  if (key == 's') {     
    noLoop(); 
  }    
 
  if (key == 'r') {        
    loop(); 
  } 
}