zes pijlen rond een vijfhoek in overprojectie.                      terug naar de inleiding
Met de slider het aantal frames veranderen' eventueel een andere draaipunten kiezen.
Met de "s" toets stoppen de rotaties met iedere andere toets starten de rotaties weer.

                                                                       pijlen rond de vijfhoek in fullscreen

De vliegers zijn hier pijlen want het derde argument in de constructor is negatief 

problemen met de slider
het kan voorkomen dat door het instellen van de slider de teller waarden hoger wordt dan de slider.value
dan wordt de for lus niet meer doorlopen en blijft de teller door tellen

Dit probleem oplossen door, als deze situatie zich voordoet, de teller op 0 te zetten (regel 71)

Met de slider wordt het aantal frames die worden overgeslagen ingesteld
slider naar links: 0 frames worden overgeslagen
slider naar rechts: 80 frames worden overgeslagen
begin stand van de slider: 30 frames worden overgeslagen
De slider wordt in setup geinitialiseerd (regel 48) daarom is het niet mogelijk om in de knoppen functies (regels 90 t/m  101) setup aan te roepen.

dit opgelost door in de objecten array "vorm" de objectvariabelen dc (is het draaipunt) te veranderen

De schets in p5.js

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

 
 
let vorm = []; 
let slider; let teller = 0; 
function setup() { 
 createCanvas(windowWidth, windowHeight); 
 background('rgba(255,255,255, 0)'); 
 let x = width/2; let y = height/2; let n = height/7; 
 //knoppen creeren en intialiseren 
 buttonD = createButton('download'); 
 buttonD.position(10,40);buttonD.style('width','100px'); 
 buttonD.mouseClicked(buttonDAction); 
 //CVA = clear en vijfhoek aan. CVU = clear en vijfhoek uit 
 buttonCVA = createButton('clear,vijfhoek aan'); 
 buttonCVA.position(10,80);buttonCVA.style('width','150px'); 
 buttonCVA.mouseClicked(buttonCVAAction); 
 buttonCVU = createButton('clear,vijfhoek uit'); 
 buttonCVU.position(10,120);buttonCVU.style('width','150px'); 
 buttonCVU.mouseClicked(buttonCVUAction); 
 button0 = createButton('draaipunt 0'); 
 button0.position(10,160);button0.style('width','100px'); 
 button0.mouseClicked(button0Action); 
 button1 = createButton('draaipunt 1'); 
 button1.position(10,200);button1.style('width','100px'); 
 button1.mouseClicked(button1Action); 
 button2 = createButton('draaipunt 2'); 
 button2.position(10,240);button2.style('width','100px'); 
 button2.mouseClicked(button2Action); 
 button3 = createButton('draaipunt 3'); 
 button3.position(10,280);button3.style('width','100px'); 
 button3.mouseClicked(button3Action); 
 button4 = createButton('draaipunt 4'); 
 button4.position(10,320);button4.style('width','100px'); 
 button4.mouseClicked(button4Action); 
 button5 = createButton('draaipunt 5'); 
 button5.position(10,360);button5.style('width','100px'); 
 button5.mouseClicked(button5Action); 
 button6 = createButton('draaipunt 6'); 
 button6.position(10,400);button6.style('width','100px'); 
 button6.mouseClicked(button6Action); 
 button7 = createButton('draaipunt 7'); 
 button7.position(10,440);button7.style('width','100px'); 
 button7.mouseClicked(button7Action); 
 button8 = createButton('draaipunt 8'); 
 button8.position(10,480);button8.style('width','100px'); 
 button8.mouseClicked(button8Action); 
 //slider creeren en intialiseren 
 slider = createSlider(0, 80, 30, 2); 
 slider.position(10, 10); 
 slider.style('width', '80px'); 
 let rl = sqrt(50+10*sqrt(5))*n/10; 
 let rk = sqrt(25+10*sqrt(5))*n/10; 
 let h = (rl+rk); 
 let nphi = ((1+sqrt(5))/2)*n; 
 let phi = ((1+sqrt(5))/2); 
 let k = rl/2*(3-phi); let bl = rl/(2*phi); 
 let alfa = 50; let sw = n/180; let kleur = 0; 
 vorm[0]=new Vlieger(nphi,h+k,-k,1,x, y-rl, 0,color(237,230,86,alfa),sw,color(kleur)); 
 vorm[1]=new Vlieger(nphi,h+k,-k,1,x, y-rl, 0,color(237,86,91,alfa),sw,color(kleur)); 
 vorm[2]=new Vlieger(nphi,h+k,-k,1,x+nphi/2,y-bl, 72,color(63,186,229,alfa),sw,color(kleur)); 
 vorm[3]=new Vlieger(nphi,h+k,-k,1,x+n/2, y+rk, 144,color(76,229,63,alfa),sw,color(kleur)); 
 vorm[4]=new Vlieger(nphi,h+k,-k,1,x-n/2, y+rk,-144,color(76,229,63,alfa),sw,color(kleur)); 
 vorm[5]=new Vlieger(nphi,h+k,-k,1,x-nphi/2,y-bl, -72,color(63,186,229,alfa),sw,color(kleur)); 
 vorm[6]=new Vhoek_n5(n, 0, x, y, 0, color(100, 200, 0, alfa),sw,color(kleur)); 
} 

 
function draw() { 
 teller = teller + 1; 
 let count = slider.value(); 
 if (teller > slider.value()){teller = 0;} 
 if (teller == count) 
 for (let i = 0; i < 7; i++) 
 { 
 vorm[i].display() 
 teller = 0; 
 } 

if (key == 's' || key == 'S') { 
 } 
 else 
 { 
 vorm[0].dpRotRe(vorm[0]); vorm[1].dpRotLi(vorm[1]); 
 vorm[2].dpRotLi(vorm[2]); vorm[3].dpRotRe(vorm[3]); 
 vorm[4].dpRotLi(vorm[4]); vorm[5].dpRotRe(vorm[5]); 
 } 
} 
//de knoppen functies 
function buttonDAction() {save('vlieger_vijfh_overprojectie.png')} 
function buttonCVAAction() {vorm[6].d = 0; clear()} 
function buttonCVUAction() {vorm[6].d = 7; clear()} 
function button0Action() {for(let i = 0;i< 6;i++){vorm[i].d = 0;}} 
function button1Action() {for(let i = 0;i< 6;i++){vorm[i].d = 1;}} 
function button2Action() {for(let i = 0;i< 6;i++){vorm[i].d = 2;}} 
function button3Action() {for(let i = 0;i< 6;i++){vorm[i].d = 3;}} 
function button4Action() {for(let i = 0;i< 6;i++){vorm[i].d = 4;}} 
function button5Action() {for(let i = 0;i< 6;i++){vorm[i].d = 5;}} 
function button6Action() {for(let i = 0;i< 6;i++){vorm[i].d = 6;}} 
function button7Action() {for(let i = 0;i< 6;i++){vorm[i].d = 7;}} 
function button8Action() {for(let i = 0;i< 6;i++){vorm[i].d = 8;}}