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
bekijk de 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 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();
}