19.07.2014 Views

Miniprojekt 2: 2D datorgrafik

Miniprojekt 2: 2D datorgrafik

Miniprojekt 2: 2D datorgrafik

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!