Transformationer, Angel

Relevanta dokument
Transformationer. Translation. Skalning. Homogena koordinater. Rotation. 2D-grafik. x y. Inom datorgrafik är transformationer den. Många. bevaras.

2D-grafik. Gustav Taxén

Transformationer i 3D. Gustav Taxén

5 Linjär algebra. 5.1 Addition av matriser 5 LINJÄR ALGEBRA

Linjära avbildningar. Låt R n vara mängden av alla vektorer med n komponenter, d.v.s. x 1 x 2. x = R n = x n

Geometriska vektorer

ax + y + 2z = 3 ay = b 3 (b 3) z = 0 har (a) entydig lösning, (b) oändligt många lösningar och (c) ingen lösning.

Geometriska transformationer

Veckoblad 1, Linjär algebra IT, VT2010

Föreläsning 13 Linjär Algebra och Geometri I

{ 1, om i = j, e i e j = 0, om i j.

Explorativ övning Vektorer

UPG5 och UPG8 Miniprojekt 1: 2D datorgrafik

Linjär Algebra, Föreläsning 2

Exempel :: Spegling i godtycklig linje.

Vektorgeometri. En vektor v kan representeras genom pilar från en fotpunkt A till en spets B.

Exempel :: Spegling i godtycklig linje.

Homogena koordinater och datorgrafik

LYCKA TILL! kl 8 13

Veckoblad 3, Linjär algebra IT, VT2010

1 som går genom punkten (1, 3) och är parallell med vektorn.

Vektorgeometri för gymnasister

17. Övningar ÖVNINGAR Låt F och G vara avbildningar på rummet, som i basen e = {e 1,e 2,e 3 } ges av. x 1 x 2 2x 2 + 3x 3 2x 1 x 3

Egenvärden och egenvektorer

Modul 1: Komplexa tal och Polynomekvationer

Tentamen i Linjär algebra (TATA31/TEN1) ,

Grafiska pipelinen. Edvin Fischer

TANA17 Matematiska beräkningar med Matlab

Linjär Algebra, Föreläsning 9

M = c c M = 1 3 1

KOKBOKEN 1. Håkan Strömberg KTH STH

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 9 november 2015 Sida 1 / 28

TAIU07 Matematiska beräkningar med Matlab

Analys o Linjär algebra. Lektion 7.. p.1/65

SF1624 Algebra och geometri Tentamen Torsdag, 9 juni 2016

October 9, Innehållsregister

3D: transformationer:

Uppsala Universitet Matematiska Institutionen Bo Styf. Sammanfattning av föreläsningarna

Inledning. CTH/GU LABORATION 4 MVE /2017 Matematiska vetenskaper

Linjär algebra och geometri 1

Mer om geometriska transformationer

Banach-Tarskis paradox

Mer om analytisk geometri

Linjär algebra och geometri I

SF1624 Algebra och geometri Tentamen med lösningsförslag onsdag, 11 januari 2017

Transformationer i R 2 och R 3

Avalanche Studios. OpenGL. Vår teknik. Våra spel. Lite inspiration... Stora, öppna spelvärldar. Sandbox-gameplay. Hög audiovisuell standard

1 Linjära ekvationssystem. 2 Vektorer

Linjär algebra och geometri I

Linjär algebra och geometri 1

Linjär Algebra, Föreläsning 2

Vektoranalys I. Anders Karlsson. Institutionen för elektro- och informationsteknik

Linjär algebra på några minuter

SF1624 Algebra och geometri

Institutionen för matematik och datavetenskap Karlstads universitet. GeoGebra. ett digitalt verktyg för framtidens matematikundervisning

Kort introduktion till POV-Ray, del 1

19. Spektralsatsen Spektralsatsen SPEKTRALSATSEN

2s + 3t + 5u = 1 5s + 3t + 2u = 1 3s 3u = 1

Linjära ekvationssystem

SF1624 Algebra och geometri

e = (e 1, e 2, e 3 ), kan en godtycklig linjär

1. Inledning. x y z. u = xe 1 + ye 2 + ze 3 = e

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt

2x + y + 3z = 1 x 2y z = 2 x + y + 2z = 1

Kurvor och ytor. Gustav Taxén

Vektorgeometri för gymnasister

Karta över Jorden - viktigt exempel. Sfär i (x, y, z) koordinater Funktionen som beskriver detta ser ut till att vara

MATEMATIK GU. LLMA60 MATEMATIK FÖR LÄRARE, GYMNASIET Analys, ht Block 5, översikt

Matematik med Matlab för I Inledning. 1 Programmering i MATLAB

c d Z = och W = b a d c för några reella tal a, b, c och d. Vi har att a + c (b + d) b + d a + c ac bd ( ad bc)

1 Vektorer i koordinatsystem

8 Minsta kvadratmetoden

Läsanvisningar och övningsuppgifter i MAA150, period vt Erik Darpö

Vektorgeometri för gymnasister

FFM234, Klassisk fysik och vektorfält - Föreläsningsanteckningar

Laboration 3 GUI-programmering

Spelutveckling 3d-grafik och modellering. Grunder för 3d-grafik Blender Animering

Affina avbildningar och vektorgrafik

I rastergrafikens barndom...gjorde man grafik genom att skriva i ett videominne. Operationer på buffert och pixlar. Idag... Varför grafikkort?

Vi definierar addition av två vektorer och multiplikation med en reell skalär (tal) λλ enligt nedan

Frågorna 1 till 6 ska svaras med ett kryss för varje korrekt påstående. Varje uppgift ger 1 poäng. Använd bifogat formulär för dessa 6 frågor.

Räta linjens ekvation & Ekvationssystem

För ingenjörs- och distansstudenter Linjär Algebra ma014a ATM-Matematik Mikael Forsberg

Lösningar till utvalda uppgifter i kapitel 1

MA2004 Tillämpad Matematik II, 7.5hp,

DEL I 15 poäng totalt inklusive bonus poäng.

2x + y + 3z = 4 x + y = 1 x 2y z = 3

Vektorgeometri för gymnasister

3 Man kan derivera i Matlab genom att approximera derivator med differenskvoter. Funktionen cosinus deriveras för x-värdena på följande sätt.

ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter

. Bestäm Rez och Imz. i. 1. a) Låt z = 1+i ( b) Bestäm inversen av matrisen A = (3p) x + 3y + 4z = 5, 3x + 2y + 7z = 3, 2x y + z = 4.

kth/dh2640/grip09 res checkin grip09 course join grip09

Stöd inför omtentamen i Linjär algebra TNA002.

Linjär algebra på 2 45 minuter

Matematiska tillämpningar i 3Dgrafik

6. Samband mellan derivata och monotonitet

tal. Mängden av alla trippel av reella tal betecknas med R 3 och x 1 x 2 En sekvens av n reella tal betecknas med (x 1, x 2,, x n ) eller

Konvexa höljet Laboration 6 GruDat, DD1344

1 Ortogonalitet. 1.1 Skalär produkt. Man kan tala om vinkel mellan vektorer.

LINJÄRA AVBILDNINGAR

Transkript:

GrIP vt9: Föreläsning - D-grafik Yngve Sundblad 9-- D-grafik Yngve Sundblad @kth.se 8-79747 Rum 46, Lindstedtsv.5, plan 6 (vid Torget) DH64 Grafik och Interaktionsprogrammering VT 9 Transformationer, Angel 4.6-4.9 Inom datorgrafik är transformationer den kanske viktigaste formen av operation. De vanligaste transformationerna är linjära och kan skrivas som matriser. Dessa är affina, d.v.s. alla punkter på en linje fortsätter att ligga på linjen efter transformationen, parallella linjer bevaras, och förhållandet mellan avstånd bevaras. Sida

GrIP vt9: Föreläsning - D-grafik Yngve Sundblad 9-- Sida Translation T P P d d T P P d d + + +,,, (d, d) (3, -4) Skalning s s Skalningen sker kring origo. (s, s) (/, /4)

GrIP vt9: Föreläsning - D-grafik Yngve Sundblad 9-- Rotation θ π/4 (45 grader) / * 5 - / *. / * 5 + / * 4.9 cosθ sinθ sinθ cosθ Rotationen sker kring origo. Homogena koordinater Det vore bra om vi kunde skriva alla dessa transformationer på ett konsekvent sätt. Det funkar om vi inför en tredje koordinat w. Vi säger att (/w, /w) är de kartesiska koordinaterna (cartesian coordinates). Definition: två punkter är lika om den enas homogena koordinater är en multipel av den andra (har samma kartesiska koordinater). Åtminstone en av de tre koordinaterna måste vara skild från. När w ligger punkten i oändligheten och vi definierar att (, ) då representerar en riktning/vektor. Sida 3

GrIP vt9: Föreläsning - D-grafik Yngve Sundblad 9-- Sida 4 Punkter och riktningar Riktningar (vektorer) och punkter är olika geometriska entiteter och eisterar oberoende av referenskoordinatsstem! Men de kan definieras i förhållande till ett sådant. Och vi behöver ett för att kunna specificera dem med siffror. Bastransformationsmatriser cos sin sin cos s s d d θ θ θ θ Translation Skalning Rotation I affina transformationer ändras aldrig w-koordinaten.

GrIP vt9: Föreläsning - D-grafik Yngve Sundblad 9-- Kombination av transformationer Vi kan nu kombinera transformationer genom att multiplicera ihop matriserna! Men resultatet kan bli olika om man vänder på ordningen! T.5 S.5 ( ST ) P.5 ( T ) S P.5 (,) (,) (.5,.5) Eempel Rotera kring en annan punkt än origo: P (, 5), P (4,5), θ π/6 (3 grader) Translation : Rotation: Translation : Totalt: U T R T ( - ) ( 3/ -/ ) ( ) ( 3/ -/ 9/- 3 ) ( -5 ) (/ 3/ ) ( 5 ) (/ 3/ 4-5 3/) ( ) ( ) ( ) ( ) U * (, 5, ) (, 5, ); U * (4, 5, ) (+ 3, 6, ) (,5,) + *( 3/, /, ) Observera att man multiplicerar på matriserna från vänster! Sida 5

GrIP vt9: Föreläsning - D-grafik Yngve Sundblad 9-- Mer om rotationsmatriser I en rotationsmatris är översta -delmatrisen ortogonal, enhetsvektorer med skalärprodukt. Riktningsvektorerna (r,r,) och (r,r,) är de två vektorer som - resp. -aeln är roterade till! Rotationsvinkeln θ, r r cosθ, r -r sinθ Två rotationer: θ η ger rotationen θ+η, lätt att visa, multiplicera ihop, använd cosηcosθ sinηsinθ cos(θ+η) cosηsinθ + sinηcosθ sin(θ+η) r R r r r Skevning (shear) SH SH b a Sida 6

GrIP vt9: Föreläsning - D-grafik Yngve Sundblad 9-- Sida 7 Spegling (reflection) u u u u u u RE Där (u, u ) är riktningsvektorn (med längd ) man speglar igenom. (u, u ) Ickelinjära transformationer Förekommer inte lika ofta som linjära, men är inte alls ovanliga. Eempel: Environment mapping. ) ( ) ( + + + + + + + + z z R R R R t R R R R s

GrIP vt9: Föreläsning - D-grafik Yngve Sundblad 9-- Transformationer av hörn Det vore i praktiken omöjligt i grafik att transformera varje piel för sig. Om vi använder linjära transformationer räcker det dock att transformera hörnen och binda samman dem med linjer! Man interpolerar sedan data definierad i hörnen linjärt över primitiverna. Om det är färg man interpolerar brukar det kallas Goraud shading. Framebuffer, Angel. Datorminne som lagrar information för pilarna som ska visas på skärmen Grafikkortet hämtar värdena för mängden rött, grönt, och blått för varje piel Strkan hos elektronkanonen anpassas efter värdena R G B R G B 3 R G B R G B 4 5 R G B R G B Sida 8

GrIP vt9: Föreläsning - D-grafik Yngve Sundblad 9-- Pilar Med pielvärde menar man oftast RGBvärdena i framebuffern Antalet bitar för R, G resp. B-värdena bestämmer hur många färger som kan representeras Pilar: 8 bitar 8 bitar R G B Man tilldelar färre bitar till den blå kanalen eftersom människan har svårare att se skillnader mellan blå nanser. Ger 3 + 3 + 6 färgnanser. Detta är en mcket ovanlig färgkodning idag. Sida 9

GrIP vt9: Föreläsning - D-grafik Yngve Sundblad 9-- Pilar: 8 bitar palett Palett: 4 bitar per post 8 bitar inde Ger 56 samtidiga färger ur 67776 möjliga. Pilar: Color ccling http://www.vo.lu/homepages/phahn/fractals/ccling.htm Shifta färgerna i paletten (oftast med hjälp av ett offsetvärde) Klassisk 8-talseffekt i spel! Sida

GrIP vt9: Föreläsning - D-grafik Yngve Sundblad 9-- Pilar: 6 bitar 6 bitar R G B 5 bitar till R och B, 6 bitar till G eftersom människan uppfattar skillnader i gröna nanser bäst. Ger 5 + 6 + 5 65536 olika färgnanser. Kallas ibland hi-color. Pilar: 4 bitar 4 bitar R G B bte (8 bitar) till R, G, och B. Ger 8 + 8 + 8 67776 olika färgnanser. Kallas ibland true-color, eftersom människan kan uppfatta ungefär så många nanskillnader. Sida

GrIP vt9: Föreläsning - D-grafik Yngve Sundblad 9-- Pilar: 3 bitar 8 röd + 8 grön + 8 blå + 8 alpha 67776 färgnanser + 56 genomskinlighetsnivåer Pilar: mer än 8 bitar per kanal Konverterar du en 4-bitars bild till svartvitt är du tillbaka i 56 färgnanser! Manipulation av bilder kan minska antalet signifikanta siffror eller ge avrundningsfel så att du tappar information Idag används ofta eller 6 bitar per kanal (64 64 bit) Ibland t.o.m. 3 bitar per kanal (8 bit) Sida

GrIP vt9: Föreläsning - D-grafik Yngve Sundblad 9-- Fönstersstem Compositing Sida 3

GrIP vt9: Föreläsning - D-grafik Yngve Sundblad 9-- Compositing Georges Méliès, 98 Lager Bildbuffrar som kombineras ihop piel för piel nedifrån och upp. För varje ntt lager definierar man en funktion som beskriver hur informationen från föregående lager ska kombineras ihop med aktuellt lager. Sida 4

GrIP vt9: Föreläsning - D-grafik Yngve Sundblad 9-- Eempel Eempel Sida 5

GrIP vt9: Föreläsning - D-grafik Yngve Sundblad 9-- I ett spel som "94" används inte linjer. Vilka element består grafiken av? Hur funkar det? Sprite är en term från 8-talet I färgpaletten för en 8- bitarsbild bestämmer man att en av färgerna ska vara genomskinlig Idag använder man alpha-kanalen istället Sprites Sida 6

GrIP vt9: Föreläsning - D-grafik Yngve Sundblad 9-- Sprites + Bilden bggs upp i lager, nerifrån och upp. I många äldre datorer fanns en operation för att snabbt "sprite"-kopiera från minne till framebuffer, s.k. bitblt. Vissa maskiner kunde skala och rotera sprites vid utritningen. Ibland fanns stöd för kollisionsdetektion sprites emellan. BitBlt och RasterOp För att kunna fltta objekt i realtid på tidiga rastergrafiska arbetsstationer, t.e. Xero Alto (974) resp CMU Perq (98) hade processorn snabba rasteroperationer, Bit Block Transfer resp RasterOp. Finns även i Java/Swing. De kunde fltta en rektangel i framebufferten till annat läge i logisk samverkan med det som låg där: AND, OR, XOR, REPLACE XOR upprepat användbar vid flttningar, t.e. markör z XOR ; z XOR -> or or Sida 7

GrIP vt9: Föreläsning - D-grafik Yngve Sundblad 9-- Sprites http://www.nes-snes-sprites.com/donkekongcountrnew.html Det blir MÅNGA sprites, ibland en för varje animationsruta! (Donke Kong Countr för SNES hade över tusen, t.e.) Duktiga spritetecknare återanvände bildrutor. Om bitblt-operationen kunde spegla bilderna sparade man mcket minne. Isometriska spel Q*Bert (Arkad) Knight Lore (ZX Spectrum) SimCit (PC) Sida 8

GrIP vt9: Föreläsning - D-grafik Yngve Sundblad 9--.5D Doom En billboard är en polgon som alltid vänder "framsidan" åt kameran. D-grafik i Java AWT - Abstract Windowing Toolkit - with Sunʼs Java 995 Swing - Model-View-Controller GUI Tool released b Netscape 996, Sun 997 import java.awt.*; import java.swing.*; ger tillgång till klasserna Graphics med metoder för att rita geometriska objekt med attribut som färg, XOR mode mm GraphicsD med metoder för att göra affin transformation, klippa, komponera, mm mm Sida 9

GrIP vt9: Föreläsning - D-grafik Yngve Sundblad 9-- D-grafik i Java Transformationer i JavaD GeneralPath p new GeneralPath(); p.moveto(5, 5); p.lineto(5, 5); p.lineto(, ); p.closepath(); g.draw(p); AffineTransform t AffineTransform.getTranslateInstance(, 5); t.rotate(-math.pi/3.); AffineTransform old g.gettransform(); g.transform(t); g.draw(p); g.settransform(old); Sida

GrIP vt9: Föreläsning - D-grafik Yngve Sundblad 9-- Det finns möjlighet att använda lager och maskning i JavaD. Man kan också kombinera ihop primitiver automatiskt med boolska operationer. Stöd för att ladda och rita bitmaps/bilder finns också. Mer om JavaD Registrering res checkin grip9 course join grip9 Sida

GrIP vt9: Föreläsning - D-grafik Yngve Sundblad 9-- Inlämningsuppgift D-grafik med transformationer Flertalet uppgifter matematiskt betonade kring transformationer Finns på kurswebben under fliken Inl.uppg., till @kth.se senast 6 februari p- Sida