Het is zoveel werk en het kan zoveel makkelijker. Als je het coördinatenstelsel maar even kon verbouwen. En dat kan dus. Heel makkelijk. Maar de werking is toch wel complex.
Zonder translate
Zonder translate moet je zelf met zo’n omslachtige truuk als mijnX
en mijnY
de juiste locatie opgeven. Zelf de boekhouding bijhouden, zo ingewikkeld
Met translate
Met translate
doet P5JS de boekhouding voor je en kun je het punt (0,0)
virtueel tijdelijk verplaatsen.
Na translate(x,y)
is het punt (x,y)
de nieuwe (0,0).
Als je iets plaatst op (10,10)
dan komt het, na translate (x,y)
op (x + 10, y + 10).
Nu de turbo erop
Nu heb je een idee van translations. Het wordt pas leuk, of heftig, als je elke draw()
loop een nieuwe translation gaat doen. Of een rotate()
of een scale()
, die zijn soortgelijk. Coding Train legt het goed uit.
Samengevat
translate()
verplaatst het nulpunt(0,0)
rotate()
. is altijd over het nulpunt(0,0)
dus je moet je bijna altijd eerst translaten naar de het juiste rotatie-punt.scale()
stretchen vanuit point of origin, zie de volgende videopush()
– save de status voorafgaand aan een transformatie – het nulpunt maar ook fill, stroke, stroke weight (zie video 3)pop()
– restore (terugzetten) na afloop van die transformatie
Met dit kleine blokje code kun je meerdere keren tegelijk sketchen zonder de rest te roteren.
push();
translate(50,50)
rotate(angle);
fill(255,100,50);
rect(0,0,100,50);
pop();
Details
Code die ook langs kwam
angleMode(DEGREES)
: Je werkt in Radians (radialen, 2*pi is 1 cirkel) tenzij jeangleMode(DEGREES)
hebt gezet.rectMode(CENTER)
. Dan neemt ie het midden van de rect als plek van plaatsing bijrect(x,y,w,h)
Scaling – Deel 2 van de video
Deel 3: Losse eindjes
In deze video vooral het subtiele detail dat niet alleen de point of origin wordt opgeslagen met push()
, maar ook fill(), stroke(), strokeWeight()
.