zevenhoek "Vhoek_n7".
terug naar de inleiding Ga naar de site met de formules met de heptagon calculator voorbeeld met zes zevenhoeken
float ri = n/(2*tan(PI/7)); | //straal van de binnencirkel |
float ro = n/(2*sin(PI/7)); | //straal van de buitencirkel |
float h = ri+ro; | //hoogte |
float sd = 2*n*cos(PI/7); | //sd (short diagonal) lijn met een tussenhoek |
float ld = n/(2*sin(HALF_PI/7)); | //ld (long diagonal) lijn met twee tussenhoeken |
float sdt = sqrt(n*n-(sd*sd)/4); | //sdt is de loodlijn van de sd lijn naar de top |
loat ldb = sqrt((3*n*n-ld*ld)/4+ld*n/2); | //ldb is de loodlijn van de ld lijn naar de basis |
float vl13 = (h-sdt); | //verticale lijn tussen hoek 1 en 3 |
float hl15 = sqrt(ld*ld-vl13*vl13); | //horizontale lijn tussen hoek 1 en 5 |
float vl23 = (h-(ldb+sdt)); | //verticale lijn tussen hoek 2 en 3 |
float hl23 = sqrt(n*n-vl23*vl23); | //horizontale lijn tussen hoek 2 en 3 |
De algemene formule van de hoeken in graden van een regelmatige veelhoek is (aantal hoeken-2) * 180 / aantal hoeken Hier is dat (7-2) * 180 / 7 ≈ 128,57°
class Vhoek_n7 extends Vormen {
Vhoek_n7(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 ri = n/(2*tan(PI/7)); //straal van de binnencirkel
float ro = n/(2*sin(PI/7)); //straal van de buitencirkel
float h = ri+ro;
float sd = 2*n*cos(PI/7); //sd (short diagonal) lijn met een tussenhoek
float ld = n/(2*sin(HALF_PI/7)); //ld = lange diagonaal lijn met twee tussenhoeken
float sdt = sqrt(n*n-(sd*sd)/4); //sdt is de lijn van de sd lijn naar de top
float ldb = sqrt((3*n*n-ld*ld)/4+ld*n/2); //ldb is de lijn van de ld lijn naar de basis
float vl13 = (h-sdt); //verticale lijn tussen hoek 1 en 3
float hl15 = sqrt(ld*ld-vl13*vl13); //horizontale lijn tussen hoek 1 en 5
float vl23 = (h-(ldb+sdt));
float hl23 = sqrt(n*n-vl23*vl23);
beginShape();
if (d == 0) {vertex(-n/2,ri); vertex(-ld/2,ri-ldb); vertex(-sd/2,-(ro-sdt)); vertex(0,-ro);
vertex(sd/2,-(ro-sdt)); vertex(ld/2,ri-ldb); vertex(n/2, ri);}
if (d == 1) {vertex(0, 0); vertex(-(ld-n)/2,-ldb); vertex(hl15-sd,-(vl13)); vertex(n/2,-h);
vertex(hl15, -vl13); vertex((ld+n)/2, -ldb); vertex(n, 0);}
if (d == 2) {vertex((ld-n)/2, ldb); vertex(0, 0); vertex(hl23,-vl23); vertex(ld/2,-(vl23+sdt));
vertex(sd+hl23, -vl23); vertex(ld, 0);vertex((ld+n)/2,ldb);}
if (d == 3) {vertex((sd-n)/2,h-sdt); vertex(-hl23,h-(ldb+sdt)); vertex(0,0); vertex(sd/2,-sdt);
vertex(sd, 0); vertex(ld-hl23,h-(ldb+sdt));vertex((sd+n)/2,h-sdt);}
if (d == 4) {vertex(-n/2,h); vertex(-ld/2,h-ldb); vertex(-sd/2,sdt); vertex(0,0);
vertex(sd/2, sdt); vertex(ld/2,h-ldb); vertex(n/2,h);}
if (d == 5) {vertex(-hl15,h-sdt); vertex(-(ld-hl23),h-(ldb+sdt)); vertex(-sd,0); vertex(-sd/2,-sdt);
vertex(0, 0); vertex(hl23,h-(ldb+sdt)); vertex(-(hl15-n),h-sdt);}
if (d == 6) {vertex(-(n+ld)/2,ldb); vertex(-ld, 0); vertex(-(hl23+sd),-(h-(ldb+sdt))); vertex(-ld/2,-(h-ldb));
vertex(-hl23, -(h-(ldb+sdt))); vertex(0,0); vertex(-(ld-n)/2,ldb);}
if (d == 7) {vertex(-n,0); vertex(-(n+ld)/2,-ldb); vertex(-hl15,-(h-sdt)); vertex(-n/2, -h);
vertex(hl15-n,-(h-sdt)); vertex((ld-n)/2,-ldb); vertex(0,0);}
if (d == 8) {vertex(-n/2,0); vertex(-ld/2,-ldb); vertex(-sd/2,-(h-sdt)); vertex(0, -h);
vertex(sd/2,-(h-sdt)); vertex(ld/2,-ldb); vertex(n/2,0);}
endShape(CLOSE);
popMatrix();
}
}
schets voor de lijnen met binnen en buitencirkel
Vormen vorm0;
Vormen vorm1;
Vormen vorm2;
Vormen vorm3;
Vormen vorm4;
Vormen vorm5;
Vormen vorm6;
void setup() {
size(780, 560);
// fullScreen();
float x = width/2;
float y = height/2;
float n = height/3;
float ri = n/(2*tan(PI/7)); //straal van de binnencirkel
float ro = n/(2*sin(PI/7)); //straal van de buitencirkel
float sd = 2*n*cos(PI/7); //sd (short diagonal) lijn met een tussenhoek
float ld = n/(2*sin(HALF_PI/7)); //ld (long diagonal) lijn met twee tussenhoeken
float sdt = sqrt(n*n-(sd*sd)/4); //sdt is de loodlijn van de sd lijn naar de top
float ldb = sqrt((3*n*n-ld*ld)/4+ld*n/2); //ldb is de loodlijn van de ld lijn naar de basis
vorm0 = new Vhoek_n7(n, 0, x, y, 0, color(255, 255, 0, 50));
//sd lijn tussen hoek 3 en 5
vorm1 = new Rechthoek(sd, n/50, 2, x-sd/2, y-(ro-sdt), 0, color(255,0,0));
//ld lijn tussen hoek 2 en 6
vorm2 = new Rechthoek(ld, n/50, 2, x-ld/2, y+ri-ldb, 0, color(0,255,0));
//loodlijn sdt van de sd lijn naar de top
vorm3 = new Rechthoek(sdt, n/50, 2, x, y-ro, 90, color(0,0,255));
//loodlijn ldb van de ld lijn naar de basis
vorm4 = new Rechthoek(ldb,n/50, 2, x, y+ri-ldb, 90, color(0,255,255));
//buitencirkel
vorm5 = new Ellips(ro, ro,0, x, y, 0, color(#DE905C, 0));
//binnencirkel
vorm6 = new Ellips(ri, ri,0, x, y, 0, color(#DE905C, 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();
vorm6.display();
}