MULTIMEDIALE LEERMIDDELEN --- LOS TEKSTFRAGMENT

Coordinatentransformatie bij tweede orde animatie

Deze tekst beperkt zich tot een voorbeeld uit een eerdere toets. Om een 2e orde formula-driven animatie te kunnen maken, moeten we iets weten van coordinatientransformatie en moeten we ons de volgende vragen stellen:

Voor zowel de toets als voor de prakticumopdracht moet je kunnen omgaan met coordinatienstelsels. Wat coordinatentransformatie hierbij is, laat onderstaande figuur zien.


Tweede orde animatie kenmerkt zich door een bewegend object dat een volslagen onvoorspelbaar tracject aflegd.

In deze figuur is te zien dat een willekeurig bitmapped animatie-object een willekeurig traject aflegd over een willekeurige bitmapped achtergrond. Er is een assenstelsel dat bij de formule van de beweging hoort en er is een assenstelsel dat bij het beeldscherm hoort. Die twee moeten op elkaar aangepast worden.

Een willekeurig coordinatentransformatie-voorbeeld

Gegeven een willekeurige (bewegings-) functie waarbij:
x loopt van -10 tot +10
y loopt van 0 tot +10

En het gegeven dat op het beeldscherm de beweging moet plaats (kunnen) vinden tussen vier denkbeeldige lijnen, waardoor - die als je alles ZEER GOED EN RUSTIG STAP VOOR STAP DOOR leest - een kader ontstaat waarvan:
i loopt van 100 tot 300
j loopt van 100 tot 200

Oplossing

De beide coordinatenstelsels dien je altijd eerst zorgvuldig te tekenen. De bovenstaande gegevens zijn hiervoor voldoende. In de tentamen-opgaves en bij de practicum-opdracht worden dit soort gegevens meestal vrij omslachtig of helemaal niet aangegeven.

Het is nadrukkelijk de bedoeling dat u de beide 'coordinatenruimtes' (de 'x-y-ruimte' en de 'i-j-ruimte') van de opdracht goed in beeld kunt brengen.

Gevraagd de coordinatentransformatieformules op te stellen.

Als u het eerste punt neemt kunt u in de formules i=ax+b en j=cy+d de waarden i,x,j en y die bij dit punt horen kunt optekenen invullen. Dan wordt dat bij:

punt 1: i=200 en j=100 en x=0 ---> 200 = a (0) + b
Dat levert al direct b op. b=200

punt 2: i=300 en j=200 en x=10 --> 300 = a (10) + b
Dat levert met bovenstaande gegevens 10.a = 300 - 200 ---> a = 10

punt 3: i=200 en j=200 en y=0 --> 200 = c (0) + d
Dat levert direct d op. d = 200

punt 4: j=200 en x=-10 ---> 200 = c(0) + 200
levert niks nieuws op. Immers c kan alles zijn....

Daarom kiest u een nieuw markant punt (d.w.z. een punt waar u de waarden van kent of eenvoudig uit de beide figuren kunt aflezen) (of een oud punt; daarover later), bijvoorbeeld

punt 5: i=10, j=100, x=-10 en y=+10
Dat leidt tot


Die laaste vergelijking leidt onmiddelijk tot 10.c = -100 en tot c = -10.

Controle:

Dat c negatief is klopt, want c moet bij deze aannames van het i-j-vlak altijd negatief zijn, d.wz. de 'versterking' van 'y' (welke loopt van 0 tot 10) met 'c' moet tot 100 pixels 'bandbreedte' leiden.

Dat b=200 is, klopt ook, want het 'nulpunt' van x en y moet in bij de animatie 200 pixels 'opgeschoven' worden in de i-richting. En d=200 klopt ook, want het nulpunt moet ook in de j-richting 200 pixels worden 'verschoven'. Beter gezegd: het nulpunt n het x-y-vlak ligt in het midden-onder; het nulpunt van de animatie, in het i-j-vlak, ligt nog steeds on het midden-onder maar dat is op het beeldscherm het punt i=200 en j=200.

Een andere controle:

Stop enkele waarden van x en y in de formules
i=10.x + 200
j=-10.y + 200
en kijk of de juiste pixelwaarden (i en j) eruit komen.



Er is nog een tweede aanpak mogelijk. In principe kun je namelijk met twee goed gekozen punten ook in de dan ontstane vier vergelijkingen de vier onbekenden oplossen. Over het algemeen moet je dan exentrieke punten kiezen. Bijvoorbeeld een maximum en een minimum. Bijvoorbeeld:

Punt 1 (links onder): x=-10 en y=0;
hierbij horen de waarden i=100 en j=200.
Dan kom je met deze gegevens tot de volgende twee vergelijkingen:
i=ax+b ---> 100 = a(-10) + b ----(1)
j=cy+d ---> 200 = c(0) + d ----(2)

Punt 2 (recht boven): x=10 en y=10;
Hierbij horen de waarden i=300 en j=100.
Dan kom je met deze gegevens tot de volgende tweede serie vergelijkingen:
i=ax+b ---> 300 = a(10) + b ----(3)
j=cy+d ---> 100 = c(10) + d ----(4)

Deze vier vergelijkingen met vier onbekenden zijn eenvoudig door goed kijken wie eerst en door goed stap voor stap in te vullen, op te lossen:

Uit (vergelijking 2) blijkt dat d=200 is (immers 0.c=0).

Dan blijkt - na invullen in (vergelijking 4) - dat 100=10c + 200 --> 10c=-100 --> c = -10

Dan blijven er twee vergelijkingen over (namelijk 1 en 3):
100 = -10a + b
300 = 10a + b

Bijvoorbeeld de laatste vergelijking leidt tot b = 300 - 10a. -----(5)
Dat invullen in de bovenste leidt tot 100 = -10a + 300 -10 a
Dat is gelijk aan 100-300 = -20 a
Dat is gelijk aan -200 = -20 a ---> a = 10

Dan volgt (uit vergelijking 5) dat b = 300 - 10.10 -----> b = 200.

Dit klopt met de bovenste berekening. Zodoende heb je een dubbele check.


Er is nog een derde methode. Dat is de methode van 'kijken hoeveel x en y worden versterkt' (door a resp. c) en 'hoeveel het nulpunt van x en y verschoven moeten worden in het i-j-vlak'. Sommigen zien dat direct. Anderen komen er misschien zo uit. Dat hangt van je vooropleiding af. Derhalve adviseer ik de eerste of de tweede methode om dit soort vraagstukken op te lossen.

Met deze methode kunt u al dit soort vragen over coordinatentransformatie nu zelf maken. Zelf oefenen blijft echter onontbeerlijk.

Enschede, nov. 2000