Push og Pop
Transformasjoner
Når vi skal tegne er det ofte en fordel å kunne flytte origo. Det er dessuten ofte greitt å kunne endre akseretninger og å skalere aksene. Vi har noen verktøy for dette, se Reference
translate(), scale(), rotate()
Ofte er det dessuten slik at vi gjerne vi oppheve slike transformasjoner når vi er ferdige med å tegne en detalj. Dette kan vi kontrollere med push() og pop().
Push oppretter en status med gjeldende verdier, og pop resetter til status før siste push. Disse to, push og pop, må altså matche hverandre.
Gangen i dette blir ofte slik:
push(); // husk status <gjør noen transformasjoner som scale, translate, rotate > <tegn noe> pop(); // glem transformasjonene og gå tilbake til status før siste push
Styling
Vi har samme strategi når vi setter en rekke stilegenskaper. De som er angitt i Reference er:
fill(), stroke(), tint(), strokeWeight(), strokeCap(), strokeJoin(), imageMode(), rectMode(), ellipseMode(), colorMode(), textAlign(), textFont(), textMode(), textSize(), textLeading()
Også her blir det slik at vi lager en strategi som følger:
push(); // husk status <set opp stil som fill(), stroke() > <tegn noe> pop(); // glem settingene og gå tilbake til status før siste push
Eksempel
Websiden er minimalistisk:
og scriptet er slik:
Som du ser har jeg brukt innrykk i koden for å holde styr på posh - pop par. Dette er ikke nødvendig, men det hjelper når vi skal lese, og eventuelt korrigere, koden.
Du kan også løsningen på en egen side:
test.html
https://borres.hiof.no/pisk/P5js/p5jsskisser/pushpop/test.html
Det kan være en god ide og kopier dette eksempelet, eller lag noe lignende, og eksperimentere litt med transformajoner og stiler.