roterende gouden driehoeken rond een vijfhoek.                  terug naar de inleiding
Toets "s" stopt de rotaties. met de overige toetsen starten de rotaties weer

                                                    10 roterende gouden driehoeken rond een vijfhoek in fullscreen

 

de schets 10 roterende gouden driehoeken rond een vijfhoek in p5.js

de schets maakt gebruik van de p5.js classes "Vhoek_n5" , "Drieh_nh" en de superclass "Vormen"

 
let vorm = []; let vorm0; let vijfhoek = true;
function setup() {
  buttonR = createButton('reset');
  buttonR.position(20,30);buttonR.style('width','50px');
  buttonR.mouseClicked(buttonRAction);
  button0 = createButton('dp 0');
  button0.position(20,60);button0.style('width','50px');
  button0.mouseClicked(button0Action);
  button1 = createButton('dp 1');
  button1.position(20,90);button1.style('width','50px');
  button1.mouseClicked(button1Action);
  button2 = createButton('dp 2');
  button2.position(20,120);button2.style('width','50px');
  button2.mouseClicked(button2Action);
  button3 = createButton('dp 3');
  button3.position(20,150);button3.style('width','50px');
  button3.mouseClicked(button3Action);
  button4 = createButton('dp 4');
  button4.position(20,180);button4.style('width','50px');
  button4.mouseClicked(button4Action);
  button5 = createButton('dp 5');
  button5.position(20,210);button5.style('width','50px');
  button5.mouseClicked(button5Action);
  button6 = createButton('dp 6');
  button6.position(20,240);button6.style('width','50px');
  button6.mouseClicked(button6Action);
  buttonN = createButton('n');
  buttonN.position(20,270);buttonN.style('width','50px');
  buttonN.mouseClicked(buttonNAction);
  buttonAU = createButton('vijfhoek aan/uit');
  buttonAU.position(20,300);buttonAU.style('width','110px');
  buttonAU.mouseClicked(buttonAUAction);
  buttonD = createButton('downloaden');
  buttonD.position(20,330);buttonD.style('width','110px');
  buttonD.mouseClicked(buttonDAction);
  createCanvas(windowWidth, windowHeight);
  let x = width/2; let y = height/2; let n = height/5;
  let rl = sqrt(50+10*sqrt(5))*n/10; //rl is de straal van de binnencirkel van de vijfhoek
  let rk = sqrt(25+10*sqrt(5))*n/10; //rk is de straal van de buitencirkel van de vijfhoek
  let nphi = ((1+sqrt(5))/2)*n; //nphi is de lijn van hoek naar hoek van de vijfhoek
  let phi = (1+sqrt(5))/2;      //phi wordt gebruikt in bl
  let bl = rl/(2*phi);          //bl is de lijn van het middelpunt naar de nphi li
  let h2 = sqrt(n*n-nphi*nphi/4);
  let alfa = 75; let sw = n/180; let sc = color(0);
  vorm0 = new Vhoek_n5(n, 0, x, y, 0, color(255, 255, 0, alfa),sw,sc);
  vorm[0] = new Drieh_nh(nphi,h2,3,x-n/2,   y+rk,-144,color(200,0,50,alfa), sw,sc);
  vorm[1] = new Drieh_nh(nphi,h2,3,x-n/2,   y+rk,-144,color(200,0,50,alfa), sw,sc);
  vorm[2] = new Drieh_nh(nphi,h2,3,x-nphi/2,y-bl,-72, color(20,200,50,alfa),sw,sc);
  vorm[3] = new Drieh_nh(nphi,h2,3,x-nphi/2,y-bl,-72, color(20,200,50,alfa),sw,sc);
  vorm[4] = new Drieh_nh(nphi,h2,3,x,       y-rl,  0, color(20,20,200,alfa),sw,sc);
  vorm[5] = new Drieh_nh(nphi,h2,3,x,       y-rl,  0, color(20,20,200,alfa),sw,sc);
  vorm[6] = new Drieh_nh(nphi,h2,3,x+nphi/2,y-bl, 72, color(20,200,50,alfa),sw,sc);
  vorm[7] = new Drieh_nh(nphi,h2,3,x+nphi/2,y-bl, 72, color(20,200,50,alfa),sw,sc);
  vorm[8] = new Drieh_nh(nphi,h2,3,x+n/2,   y+rk,144, color(200,0,50,alfa), sw,sc);
  vorm[9] = new Drieh_nh(nphi,h2,3,x+n/2,   y+rk,144, color(200,0,50,alfa), sw,sc);
}
 
function draw() {
  clear()
  background('rgba(255,255,255, 0)');
  if (vijfhoek) {vorm0.display()}
 
  for (let i = 0; i < 10; i++) {vorm[i].display()}
  if (key == 's'|| key == 'S') { }
   else
 {
  vorm[0].dpRotLi(vorm[0]);  vorm[1].dpRotRe(vorm[1]);
  vorm[2].dpRotRe(vorm[2]);  vorm[3].dpRotLi(vorm[3]);
  vorm[4].dpRotRe(vorm[4]);  vorm[5].dpRotLi(vorm[5]);
  vorm[6].dpRotLi(vorm[6]);  vorm[7].dpRotRe(vorm[7]);
  vorm[8].dpRotRe(vorm[8]);  vorm[9].dpRotLi(vorm[9]);
  }
}
 
function windowResize() {
  resizeCanvas(windowWidth, windowHeight);
}
function buttonRAction() {setup()}
function button0Action() {for(let i = 0;i< 10; i++){vorm[i].d = 0;}}
function button1Action() {for(let i = 0;i< 10; i++){vorm[i].d = 1;}}
function button2Action() {for(let i = 0;i< 10; i++){vorm[i].d = 2;}}
function button3Action() {for(let i = 0;i< 10; i++){vorm[i].d = 3;}}
function button4Action() {for(let i = 0;i< 10; i++){vorm[i].d = 4;}}
function button5Action() {for(let i = 0;i< 10; i++){vorm[i].d = 5;}}
function button6Action() {for(let i = 0;i< 10; i++){vorm[i].d = 6;}}
function buttonNAction()
{for(let i = 0;i< 10; i++){vorm[i].n = height/2}}
function buttonAUAction()
{if(vijfhoek){vijfhoek=false}else{vijfhoek=true}}
function buttonDAction() {save('driehoeken_rond_vijfhoek.png');}