Miniprojekt 2: 2D datorgrafik
Miniprojekt 2: 2D datorgrafik
Miniprojekt 2: 2D datorgrafik
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
TNA005 VT 2007<br />
Michael Hörnquist<br />
<strong>Miniprojekt</strong> 2: <strong>2D</strong> <strong>datorgrafik</strong><br />
I den här uppgiften studerar vi hur man kan använda sig av linjära avbildningar för att modifiera<br />
bilder i två dimensioner. Mycket är repetition av vissa grundbegrepp ur linjära algebran, men<br />
avsnitten om translation är antagligen nya för de flesta studenter.<br />
Linjära avbildningar (linear transformations)<br />
Minns att en avbildning (eller funktion) F kallas linjär om den uppfyller<br />
F (αx + βy) = αF (x) + βF (y)<br />
för alla x och y i avbildningens definitionsmängd (ett vektorrum eller ett linjärt rum, vilket är<br />
synonymer) och alla skalärer (tal) α och β. Elementen i vektorrummet kan vara vanliga tal, men<br />
de kan också vara vektorer i R n , funktioner, eller andra objekt.<br />
Fundera: Är den funktion f som ges av f(x) = 2x + 3 linjär? Hur ser dess graf ut?<br />
Skalning, skjuvning, rotation, projektion och spegling<br />
Skalning (dilation): Den matris som svarar mot skalningsavbildningen kan skrivas<br />
( ) a 0<br />
.<br />
0 b<br />
Notera hur determinanten ger areaförändring. Vad händer om a < 0? Vad händer om b = 0? Vad<br />
beskriver determinanten av matrisen? Vad har den för egenvärden och egenvektorer?<br />
Skjuvning (shearing): Den matris som svarar mot skjuvningsavbildningen kan skrivas<br />
( ) 1 a<br />
,<br />
0 1<br />
om det handlar om skjuvning parallellt med x-axeln. Hur ser matrisen ut som svarar mot skjuvning<br />
parallellt med y-axeln? Vad beskriver determinanten av matrisen? Vilka egenvektorer finns och<br />
varför? Vad blir inversen av matrisen?<br />
Rotation (rotation): Den matris som svarar mot rotationsavbildningen kan skrivas<br />
( )<br />
cos v − sin v<br />
R =<br />
.<br />
sin v cos v<br />
Åt vilket håll vrider den en punkt? Varför? Vad blir R 2 ? Vad är R 1.5 ? Vad är det(R)? Hur inser<br />
man att egenvektorer endast finns för vissa speciella v (vilka)? Hur inser man enkelt vad inversen<br />
blir?<br />
1
Projektion (projection): Den matris som svarar mot projektionsavbildningen kan skrivas<br />
( )<br />
cos<br />
P =<br />
2 v sin v cos v<br />
sin v cos v sin 2 .<br />
v<br />
Vad är här v? Vad blir P 2 ? Vad blir P 100 ? Vad är det(P )? Hur ser man egenvärden och egenvektorer<br />
direkt här? Vad kan sägas om matrisinversen?<br />
Spegling (reflection): Den matris som svarar mot speglingsavbildningen kan skrivas<br />
( )<br />
cos 2v sin 2v<br />
S =<br />
.<br />
sin 2v − cos 2v<br />
Vad är här v? Vad blir S 2 ? Vad är det(S)? Hur ser man egenvärden och egenvektorer direkt här?<br />
Hur inser man att S −1 = S?<br />
Translation (translation)<br />
Ett standardsätt att göra det möjligt att hantera även s.k. affina avbildningar inom ramen för den<br />
linjära teorin är att utöka objekten med ytterligare en komponent. Exempelvis kan den räta linjen<br />
y = kx + m hanteras inom ramen för linjär teori genom att man utökar x till kolonnvektorn (x 1) t<br />
och skriver ekvationen för den räta linjen enligt<br />
( x<br />
y = (k m) .<br />
1)<br />
Mer allmänt, om vi har en punkt (x, y) som vi önskar avbilda till en ny punkt (x ′ , y ′ ) enligt<br />
x ′ = x + a, y ′ = y + b, låter vi den ursprungliga punkten representeras av vektorn (x, y, 1) t och<br />
avbildningen till de primmade koordinaterna blir<br />
⎛ ⎞ ⎛<br />
⎝ x′<br />
y ′ ⎠ = ⎝ 1 0 a<br />
⎞ ⎛<br />
0 1 b⎠<br />
⎝ x ⎞<br />
y⎠ .<br />
1 0 0 1 1<br />
Matriserna ovan för skalning, skjuvning, rotation, projektion samt spegling blir nu:<br />
⎛ ⎞<br />
⎛ ⎞ ⎛<br />
⎞<br />
a 0 0<br />
1 a 0<br />
cos v − sin v 0<br />
skalning ⎝0 b 0⎠ , skjuvning ⎝0 1 0⎠ , rotation ⎝sin v cos v 0⎠ ,<br />
0 0 1<br />
0 0 1<br />
0 0 1<br />
⎛<br />
⎞ ⎛<br />
⎞<br />
cos 2 v sin v cos v 0<br />
cos 2v sin 2v 0<br />
projektion ⎝sin v cos v sin 2 v 0⎠ , spegling ⎝sin 2v − cos 2v 0⎠ .<br />
0 0 1<br />
0 0 1<br />
Vad blir determinanten av dessa olika matriser?<br />
Sammansatta avbildningar<br />
En orsak till att man önskar bekriva transformationerna som linjära avbildningar är att man ofta<br />
är intresserad av sammansatta avbildningar. Det kan t.ex. handla om att först vrida och sedan<br />
translatera ett objekt. Avbildningsmatrisen för en sådan sammansatt operation blir ingenting annat<br />
än produkten av motsvarande två matriser, vilken enkelt beräknas en gång för alla.<br />
2
Uppgift<br />
I det egendomliga Utlandet, 1 där man inte talar svenska utan engelska, undervisas i ämnet linjär<br />
algebra på ett besynnerligt sätt. Studenterna blir väldigt duktiga på att räkna med matriser, att<br />
bestämma egenvärden och egenvektorer, lösa ekvationssystem, beräkna determinanter, m.m., m.m.,<br />
men de får aldrig chansen att se hur många av dessa begrepp kan tolkas geometriskt. Er uppgift är<br />
nu att övertyga en sådan student om nyttan av att tolka begrepp geometriskt och hur detta lägger<br />
grunden för tillämpningar inom <strong>datorgrafik</strong>. Dessvärre orkar dessa studenter varken lyssna eller<br />
läsa speciellt mycket, och därför tvingas ni att vara mycket kortfattade (men korrekta, givetvis).<br />
Er presentation skall innehålla åtminstone tre av avbildningstyperna skalning, skjuvning, rotation,<br />
projektion, spegling och translation. Den skall också rymma begreppen determinant, invers, sammansatt<br />
avbildning, egenvektor och egenvärde, men alla begrepp behöver inte exemplifieras för<br />
varje avbildningstyp. Använd gärna de öppna frågor som finns i texten ovan, men ha ett fritt<br />
förhållningssätt till dem.<br />
Förslag på arbetsgång:<br />
• Skaffa ett lämpligt objekt att låta genomgå olika avbildningar. Ett tråkigt exempel är det<br />
”F” som användes på föreläsningen och som ges av<br />
( )<br />
0 2 2 7 7 2 2 8 8 0 0<br />
.<br />
0 0 8 8 10 10 14 14 16 16 0<br />
Tag gärna något bättre.<br />
• Skriv en funktion som givet en matris av det slag som anges ovan drar räta linjer mellan dess<br />
koordinater.<br />
• Utöka koordinatmatrisen så att det även blir möjligt att translatera objektet.<br />
• Bygg ut funktionen ovan så den även fungerar för den nya typen av koordinatmatris.<br />
• Pröva, lek, tänk, lek, pröva och tänk igen!<br />
Redovisning<br />
Ni skall redovisa arbetet på max två A4-sidor på engelska, samt muntligt på svenska eller engelska,<br />
enligt kursinformationen. Konstnärlighet i bilderna är vare sig nödvändigt eller tillräckligt, men en<br />
fördel.<br />
1 med ett stänk av ironi<br />
3
Litteraturlista<br />
För att klara den engelska nomenklaturen uppmanas ni uppsöka biblioteket och låna godtycklig<br />
lärobok med titeln ”Linear algebra” (finns även referensexemplar). På kurshemsidan finns även en<br />
engelsk-svensk ordlista för högskolematematik.<br />
• Linjär algebra, TNA002, G. Baravdish, kompendium utgivet av Linköpings universitet, ITN,<br />
2006.<br />
• MATLAB-beräkningar inom teknik och naturvetenskap, andra utgåvan, P. Jönsson, Studentlitteratur,<br />
Lund 2006.<br />
• 3D Computer Graphics, 3rd ed., A. Watt, Addison-Wesley, 2000. [Kurslitteratur i kursen<br />
i <strong>datorgrafik</strong>. Kapitel 1 innehåller mycket linjär algebra som den nödvändiga grunden för<br />
grafiktillämpningar.]<br />
4