Vhoek n8 header

 

9 achthoeken in draaipunten 0 t/m 8

 

 

10 achthoeken in dp 1 t/m1010 achthoeken, draaipunten 1 t/m 10 in x,y

 

 

 

 

 

 

vier roterende achthoeken, zie de schets voor de code

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
achthoek  "Vhoek_n8"    terug naar de inleiding     zie de voorbeelden:  pijlen rond achthoek  , achthoek met 8 driehoeken  en   acht roterende achthoeken
 
Bij een hoek van 22.5 graden staat de achthoek op een hoek want een binnenhoek = (8-2) * 180 / 8 = 135 graden        ga naar de site met de formules voor de octagon
Bijv een achthoek  in dp 1, -22.5 graden staat dan op een hoek in het midden van de y as.
De achthoek bestaat uit 8 gelijkbenige driehoeken met de tophoek = 45 graden de basishoeken zijn dan 67,5 graden

De lengte van de zijden is n, als je dit zie als de schuine zijde van een vierkant dan zijn de rechthoekzijden a/2 waarin a = sqrt(2*n*n);

Dus de lijn van vlak naar vlak is de diameter van de binnencirkel di = a/2+n+a/2 = n+a  op de formulesite is dit:  n*(1+sqrt(2));

De lijn van hoek naar hoek met 3 tussenhoeken is de diameter van de buitencirkel  db = sqrt((n+a)*(n+a)+n*n); = n*sqrt(4+2*sqrt(2));

De lijn  hoek naar hoek met een tussenhoek ds = sqrt(a*a/2+a*n+n*n);  = n*sqrt(2+sqrt(2));

 
float a     = sqrt(2*n*n);   //a/2 is de horizontale lijn tussen hoeken 1 en 2   
float di     = (n+a);   //diameter van de binnencirkel of lijn van vlak naar vlak  
float hl17 =(n+a/2);   //horizontale lijn tussen hoeken 1 en 7  
float db = n*sqrt(4+2*sqrt(2);   //diameter van de buitencirkel  
float ds = n*sqrt(2+sqrt(2));   //lijn van hoek naar hoek met een tussenhoek  

met de lijn ds kan je een vierkant in een achthoek plaatsen, zie de onderste schets
 
 

class Vhoek_n8 extends Vormen { 
Vhoek_n8(float n_, int d_, float x_, float y_, float hoek_, color c1_) {  
 super();  
 n = n_;   
 x = x_;   
 y = y_;   
 hoek = hoek_;  
 c1 = c1_;  
 d = d_;  
 } 
void display() {  
 fill(c1);  
 // noStroke();  
 pushMatrix();  
 translate(x, y);  
 rotate(radians(hoek));   
 float a = sqrt(2*n*n);  // a/2 is de horizontale lijn tussen hoeken 1 en 2 
 float di = (n+a);      //diameter binnencirkel 
 float hl17 = (n+a/2);   //horizontale lijn tussen hoeken 1 en 7 
  
 beginShape(); 
 if (d == 0) {vertex(-n/2,di/2); vertex(-di/2,n/2); vertex(-di/2,-n/2);vertex(-n/2,-di/2); 
              vertex(n/2,-di/2); vertex(di/2,-n/2); vertex(di/2,n/2);  vertex(n/2,di/2);}                      
 if (d == 1) {vertex(0,0);       vertex(-a/2,-a/2); vertex(-a/2,-hl17);vertex(0,-di); 
              vertex(n,-di);     vertex(hl17,-hl17);vertex(hl17,-a/2); vertex(n,0);}                               
 if (d == 2) {vertex(a/2,a/2);   vertex(0,0);       vertex(0,-n);      vertex(a/2,-hl17); 
              vertex(hl17,-hl17);vertex(di,-n);     vertex(di,0);      vertex(hl17,a/2);}                          
 if (d == 3) {vertex(a/2,hl17);  vertex(0,n);       vertex(0,0);       vertex(a/2,-a/2); 
              vertex(hl17,-a/2); vertex(di,0);      vertex(di,n);      vertex(hl17,hl17);}                 
 if (d == 4) {vertex(0,di);      vertex(-a/2,hl17); vertex(-a/2,a/2);  vertex(0,0); 
              vertex(n,0);       vertex(hl17,a/2);  vertex(hl17,hl17); vertex(n,di);}              
 if (d == 5) {vertex(-n,di);     vertex(-hl17,hl17);vertex(-hl17,a/2); vertex(-n, 0); 
              vertex(0, 0);      vertex(a/2, a/2);  vertex(a/2,hl17);  vertex(0,di);}                            
 if (d == 6) {vertex(-hl17,hl17);vertex(-di,n);     vertex(-di,0);     vertex(-hl17, -a/2); 
              vertex(-a/2, -a/2);vertex(0, 0);      vertex(0, n);      vertex(-a/2, hl17);}               
 if (d == 7) {vertex(-hl17,a/2); vertex(-di,0);     vertex(-di,-n);    vertex(-hl17, -hl17); 
              vertex(-a/2,-hl17);vertex(0,-n);      vertex(0, 0);      vertex(-a/2, a/2);}              
 if (d == 8) {vertex(-n,0);      vertex(-hl17,-a/2);vertex(-hl17,-hl17);vertex(-n,-di); 
              vertex(0,-di);     vertex(a/2,-hl17); vertex(a/2,-a/2);   vertex(0, 0);}                 
 if (d == 9) {vertex(-n/2,0);    vertex(-di/2,-a/2);vertex(-di/2,-hl17);vertex(-n/2,-di); 
              vertex(n/2,-di);   vertex(di/2,-hl17);vertex(di/2,-a/2);  vertex(n/2,0);}   
 if (d == 10){vertex(-n/2,di);   vertex(-di/2,hl17);vertex(-di/2, a/2); vertex(-n/2,0); 
              vertex(n/2,0);     vertex(di/2,a/2);  vertex(di/2, hl17); vertex(n/2,di);}  
 endShape(CLOSE);  
 popMatrix();  
 }  
}
 
schets met 4 roterende achthoeken
 
 

Vormen [] vorm; 
void setup() { 
  size(780, 560); 
  //fullScreen(); 
  float x = width/2; 
  float y = height/2; 
  float n = height/10; 
  float a = sqrt(2*n*n); 
  vorm = new Vormen[5]; 
  vorm[0] = new Vhoek_n8(n, 0, x, y, 0, color(255, 255, 0, 100)); 
  vorm[1] = new Vhoek_n8(n, 8, x-(a/2+n/2), y-n/2, 0, color(255, 0, 0, 100)); 
  vorm[2] = new Vhoek_n8(n, 1, x+a/2+n/2,   y-n/2, 0, color(0, 0, 255, 100)); 
  vorm[3] = new Vhoek_n8(n, 5, x-(a/2+n/2), y+n/2, 0, color(0, 255, 0, 100)); 
  vorm[4] = new Vhoek_n8(n, 4, x+a/2+n/2, y+n/2, 0, color(255, 100, 0, 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 < 5; i++) 
  { 
  vorm[i].display(); 
  } 
 vorm[1].dpRotLi(vorm[1]); 
 vorm[2].dpRotRe(vorm[2]); 
 
 vorm[4].dpRotLi(vorm[4]); 
 vorm[3].dpRotRe(vorm[3]);  
}  
void keyPressed() {       
   if (key == 's') {      
    noLoop();      
  }     
 
   if (key == 'r') {         
    loop();      
  }      
} 
 
Vierkant, binnen en buitencirkel in een achthoek
De schets maakt gebruik van de class "Vhoek_n8" , "Rechthoek" , "Ellips" en de superclass "Vormen"
 
De zijde van het vierkant:                float ds = sqrt(a*a/2+a*n+n*n);      = n*sqrt(2+sqrt(2));
De diameter  van de binnencirkel:  = float di = (n+a);                            = n *(1+sqrt(2));
De diameter van de buitencirkel:    = float db = sqrt((n+a)*(n+a)+n*n) ; = n*sqrt(4+2*sqrt(2));
in bovenstaande is a: float a = sqrt(2*n*n);
 
 

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;   
 float ds = n*sqrt(2+sqrt(2));  
 float di  = n*(1+sqrt(2));   
 float db = n*sqrt(4 +2*sqrt(2));  
 vorm0 = new Vhoek_n8(n, 0, x, y, 22.5, color(255, 255, 0, 100));   
 vorm1 = new Rechthoek(ds,ds, 0, x, y, 0, color(0,255,0, 100));   
 vorm2 = new Ellips(di/2, di/2, 0, x, y, 0, color(255,200, 0,100));   
 vorm3 = new Ellips(db/2, db/2, 0, x, y, 0, color(0,255,0, 10));   
} 
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();   
}