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

Relevanta dokument
2D-grafik. Gustav Taxén

Transformationer, Angel

Transformationer i 3D. Gustav Taxén

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

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

Explorativ övning Vektorer

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

LYCKA TILL! kl 8 13

Modul 1: Komplexa tal och Polynomekvationer

Exempel :: Spegling i godtycklig linje.

Geometriska transformationer

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

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

Exempel :: Spegling i godtycklig linje.

Veckoblad 1, Linjär algebra IT, VT2010

ax + y + 4z = a x + y + (a 1)z = 1. 2x + 2y + az = 2 Ange dessutom samtliga lösningar då det finns oändligt många.

Veckoblad 3, Linjär algebra IT, VT2010

UPG5 och UPG8 Miniprojekt 1: 2D datorgrafik

SKRIVNING I VEKTORGEOMETRI

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.

UPPSALA UNIVERSITET Matematiska institutionen Styf. Exempeltenta med lösningar Programmen EI, IT, K, X Linjär algebra juni 2004

Linjär Algebra, Föreläsning 2

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.

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

Vektorgeometri för gymnasister

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

Homogena koordinater och datorgrafik

Tentamen i Linjär algebra, HF1904 exempel 1 Datum: xxxxxx Skrivtid: 4 timmar Examinator: Armin Halilovic

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Vektorgeometri för gymnasister

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

Egenvärden och egenvektorer

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

Vektorgeometri för gymnasister

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Matematik med datalogi, mfl. Linjär algebra ma014a ATM-Matematik Mikael Forsberg

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

M = c c M = 1 3 1

GRAM-SCHMIDTS METOD ... Med hjälp av Gram-Schmidts metod kan vi omvandla n st. linjäroberoende vektorer. samma rum dvs som satisfierar

Linjär algebra Föreläsning 10

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

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

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

Föreläsning 14: Grafik & mera händelsehantering

Kurvor och ytor. Gustav Taxén

SKRIVNING I VEKTORGEOMETRI

Mer om geometriska transformationer

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

LÖSNINGAR LINJÄR ALGEBRA LUNDS TEKNISKA HÖGSKOLA MATEMATIK

En vektor är mängden av alla sträckor med samma längd och riktning.

Slappdefinition. Räkning med vektorer. Bas och koordinater. En vektor är mängden av alla sträckor med samma längd och riktning.

Vektorgeometri för gymnasister

x 1 x 2 x 3 x 4 mera allmänt, om A är en (m n)-matris, då ger matrismultiplikationen en avbildning T A : R n R m.

Inför tentamen i Linjär algebra TNA002.

DOA GUI-del 1. Java och enkla grafiska gränssnitt. Kodexempel. Steg för steg 1. Skapa fönster. 1. Skapa fönster. 2. Skapa knapp

TANA17 Matematiska beräkningar med Matlab

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

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

3D: transformationer:

Linjär algebra och geometri I

Sida 1 av Låt VV = RR nn där RR nn är mängden av alla reella n-tipplar (ordnade listor med n reella tal) dvs

Mer om analytisk geometri

Affina avbildningar och vektorgrafik

10.4. Linjära höljet LINJÄRA RUM

Transformationer i R 2 och R 3

ID1004 Laboration 3, 5-6 November 2012

Linjär Algebra, Föreläsning 2

Veckoblad 4, Linjär algebra IT, VT2010

Linjär algebra och geometri I

Matematiska Institutionen KTH. Lösning till tentamensskrivning på kursen Linjär algebra II, SF1604, den 9 juni 2011 kl

Linjär algebra på några minuter

Vektorgeometri för gymnasister

Linjär algebra och geometri 1

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

1 Linjära ekvationssystem. 2 Vektorer

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

Uppgift 1. (4p) (Student som är godkänd på KS1 hoppar över uppgift 1.)

Linjär algebra och geometri 1

Basbyte (variabelbyte)

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

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

Crash Course Algebra och geometri. Ambjörn Karlsson c januari 2016

Linjära avbildningar. Definition 1 En avbildning mellan två vektorrum, F : V U, kallas linjär om. EX. Speglingar, rotationer, projektioner i R 3.

Linjär algebra på 2 45 minuter

Geometriska vektorer

SKRIVNING I VEKTORGEOMETRI

1. Bestäm volymen för den parallellepiped som ges av de tre vektorerna x 1 = (2, 3, 5), x 2 = (3, 1, 1) och x 3 = (1, 3, 0).

LINJÄRA AVBILDNINGAR

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

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A

Uppsala Universitet Matematiska Institutionen Bo Styf. Svar till tentan. Del A. Prov i matematik Linj. alg. o geom

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

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

. b. x + 2 y 3 z = 1 3 x y + 2 z = a x 5 y + 8 z = 1 lösning?

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A

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

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

Exempel på användning av arv: Geometriska figurer

P Q = ( 2, 1, 1), P R = (0, 1, 0) och QR = (2, 2, 1). arean = 1 2 P Q P R

Transkript:

Transformationer D-grafik Gustav Taén gustavt@nada.kth.se Inom datorgrafik är transformationer den kanske viktigaste formen av operation. De vanligaste transformationerna är linjära och kan skrivas som matriser. Många är också affina, d.v.s. alla punkter på en linje fortsätter tter att ligga på linjen efter transformationen, parallella linjer bevaras, och förhållandet mellan avstånd bevaras. D64 Grafik och Interaktionsprogrammering VT 6 Translation Skalning ' + d, ' + d ' d P P T, ', d ' P' P + T ' s ' s Skalningen sker kring origo. Rotation ' 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. Definition: två punkter är lika om den ena är en multipel av den andra. Aiom: Åtminstone en av de tre koordinaterna måste vara skild från. Vi säger att (/w, /w) är de kartesiska koordinaterna (cartesian coordinates). När w ligger punkten i oändligheten och vi definierar att (, ) då representerar en riktning/vektor.

Punkter och riktningar Transformationsmatriser 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. Translation Skalning Rotation ' d ' d ' s ' s ' cosθ sinθ ' sinθ cosθ I affina transformationer ändras aldrig w-koordinaten. Kombination av transformationer Eempel Vi kan nu kombinera transformationer genom att multiplicera ihop matriserna! Men resultatet kan bli olika om man vänder på ordningen! Rotera kring en punkt annan än origo: T.5 S.5 ( ST ) P.5 ( T ) S P.5 (,) (,) (.5,.5) Mer om rotationsmatriser Skevning (shear) Om R är en rotationsmatris är den översta - delmatrisen ortogonal. Riktningsvektorerna (r,r,) och (r,r,) är de två vektorer som - resp. - aeln är roterade till! r R r r r SH SH b a

Spegling (reflection) u uu RE uu u Där (u, u ) är riktningsvektorn (med längd ) man speglar igenom. Ickelinjära transformationer Förekommer inte lika ofta som linjära ra,, men är inte alls ovanliga. Eempel: : Environment mapping. s R t + R R + ( R z z + ) + R + R + R + ( R + ) Transformationer av hörn Det vore i praktiken omöjligt i 3D-grafik att transformera varje piel för sig. Om vi använder 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. Transformationer av pilar I många lägen transformerar man dock pilar. Det är viktigt att man utgår från målbilden och hämtar mtar pilar från originalet genom att transformera bak bakåt, annars uppstår hål. Det kan också vara nödvändigt att filtrera resultatet. Eempel Compositing 3

Compositing Compositing Georges Méliès, tidigt 9-t. http://www.cdisweden.com/ Lager Eempel 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. Eempel Eempel 4

Eempel Sprites Monke Island 3 Lager och sprites Paralla-scrolling Monke Island 3 Moon Patrol Pseudo-3D.5D Out Run Doom 5

Isometriska projektioner D-grafik i Java import java.awt.*; import java.swing.*; public class GrafikTest etends JFrame { public void paint(graphics g) { g.drawstring("hello",, 5); Q*Bert Knight Lore SimCit public static void main(string[] args) { GrafikTest f new GrafikTest(); f.settitle("grafiktest"); f.setsize(3, 3); f.setvisible(true); D-grafik i Java import java.awt.*; import java.swing.*; import java.awt.geom.*; D-grafik i Java public class JavaD etends JFrame { public void paint(graphics g) { GraphicsD g (GraphicsD) g; g.setrenderinghint(renderinghints.key_antialiasing, RenderingHints.VALUE_ANTIALIAS_ON); BasicStroke bs new BasicStroke(); g.setstroke(bs); GeneralPath p new GeneralPath(); p.moveto(5, 5); p.lineto(5, 5); p.lineto(, ); p.closepath(); g.draw(p); public static void main(string[] args) { JavaD f new JavaD(); f.settitle("javad"); f.setsize(3, 3); f.setvisible(true); 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); Mer om JavaD Det finns möjlighet att använda nda lager och masking i JavaD. Man kan också kombinera ihop primitiver automatiskt med boolska operationer. Stöd för att ladda och rita bitmaps/bilder bilder finns också. 6