3D: transformationer:

Relevanta dokument
Transformationer i 3D. Gustav Taxén

Kurvor och ytor. Gustav Taxén

1. Vi skriver upp ekvationssystemet i matrisform och gausseliminerar tills vi når trappstegsform,

Bakgrund. Bakgrund. Kursmaterial. Transformationer i 3D. Matematiska byggstenar. GrIP våren 2008, Förel.10 Yngve Sundblad

Parametriska kurvor: Parametriska ytor

Moment 4.11 Viktiga exempel 4.32, 4.33 Övningsuppgifter Ö4.18-Ö4.22, Ö4.30-Ö4.34. Planet Ett plan i rummet är bestämt då

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

SF1624 Algebra och geometri

1 Linjära ekvationssystem. 2 Vektorer

Explorativ övning Vektorer

Homogena koordinater och datorgrafik

KOKBOKEN 1. Håkan Strömberg KTH STH

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

Repetition, Matematik 2 för lärare. Ï x + 2y - 3z = 1 Ô Ì 3x - y + 2z = a Ô Á. . Beräkna ABT. Beräkna (AB) T

Veckoblad 1, Linjär algebra IT, VT2010

TBSK03 Teknik för avancerade Datorspel 49(68)

Modul 1: Komplexa tal och Polynomekvationer

Linjär algebra på några minuter

Vektorgeometri för gymnasister

Veckoblad 3, Linjär algebra IT, VT2010

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

1. Beräkna hastigheten, farten och accelerationen vid tiden t för en partikel vars rörelse beskrivs av r(t) = (2 sin t + cos t, 2 cos t sin t, 2t).

1. (Dugga 1.1) (a) Bestäm v (3v 2u) om v = . (1p) and u =

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

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

LINJÄRA AVBILDNINGAR

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).

SF1624 Algebra och geometri Lösningsförsag till modelltentamen

Vektorgeometri för gymnasister

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

Räta linjer i 3D-rummet: Låt L vara den räta linjen genom som är parallell med

TANA09 Föreläsning 8. Kubiska splines. B-Splines. Approximerande Splines. B-splines. Minsta kvadrat anpassning. Design av kurvor och ytor.

T BSK03 Teknik för avancerade Datorspel. Jens Ogniewski Information Coding Group Linköpings universitet

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

Exempel :: Spegling i godtycklig linje.

SF1624 Algebra och geometri

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

Där a = (1, 2,0), b = (1, 1,2) och c = (0,3, 1) Problem 10. Vilket är det enda värdet hos x för vilket det finns a och b så att

8. Euklidiska rum 94 8 EUKLIDISKA RUM

Vektorgeometri för gymnasister

SKRIVNING I VEKTORGEOMETRI

Linjär Algebra, Föreläsning 2

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.

October 9, Innehållsregister

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

Exempel :: Spegling i godtycklig linje.

2x+y z 5 = 0. e x e y e z = 4 e y +4 e z +8 e x + e z = (8,4,5) n 3 = n 1 n 2 =

Inför tentamen i Linjär algebra TNA002.

= ( 1) xy 1. x 2y. y e

1 Vektorer i koordinatsystem

Lösningar till utvalda uppgifter i kapitel 1

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

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

Lösningar till utvalda uppgifter i kapitel 8

Övningar. MATEMATISKA INSTITUTIONEN STOCKHOLMS UNIVERSITET Avd. Matematik. Linjär algebra 2. Senast korrigerad:

Innehåll. Referenssystem. Matriser. Rotationsmatrisen. Euler angle. Animering av ett objekts rotation

Linjär algebra på 2 45 minuter

Vektorgeometri för gymnasister

Approximerande Splines. B-splines. Minsta kvadrat anpassning. Design av kurvor och ytor.

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

= ( 1) ( 1) = 4 0.

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

TAIU07 Matematiska beräkningar med Matlab

Mer om geometriska transformationer

Självkoll: Ser du att de två uttrycken är ekvivalenta?

Vektorer. Vektoriella storheter skiljer sig på ett fundamentalt sätt från skalära genom att de förutom storlek också har riktning.

Lösningsförslag till skrivningen i Vektorgeometri (MAA702) Måndagen den 13 juni 2005

z = 4 + 3t P R = (5 + 2t, 4 + 2t, 4 + 3t) (1, 1, 3) = (4 + 2t, 3 + 2t, 1 + 3t)

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

Lösningar till tentamen i Matematik II, 5B1116, 5B1136 för Bio. E,I,K,ME, Media och OPEN, tisdagen den 13 april 2004.

M0043M Integralkalkyl och Linjär Algebra, H14,

2 Funktioner från R n till R m, linjära, inversa och implicita funktioner

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

Tentamen 1 i Matematik 1, HF1903, för BD10 onsdag 22 september 2010, kl

Moment 4.3.1, Viktiga exempel 4.44, 4.46, 4.48 Handräkning 4.53, 4.59, 4.60, 4.61, 4.62, 4.63, 4.64, 4.65 Datorräkning 1-15 i detta dokument

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

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.

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

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

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

Egenvärden och egenvektorer

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

(a) Bestäm för vilka värden på den reella konstanten c som ekvationssystemet är lösbart. (b) Lös ekvationssystemet för dessa värden på c.

TMV036 Analys och linjär algebra K Kf Bt, del C

Lösningsförslag till tentamen Torsdag augusti 16, 2018 DEL A

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

Dagens ämnen. Linjära ekvationssystem: Successiv elimination Vektorer Definitionen Grundläggande räkneoperationer Bas och koordinater Ortsvektorer

2. Lös ekvationen z i = 2 z + 1 och ge i det komplexa talplanet en illustration av lösningsmängden.

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

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

x ( f u 2y + f v 2x) xy = 24 och C = f

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

Vektorerna är parallella med planet omm de är vinkelräta mot planets normal, dvs mot

Vektorgeometri för gymnasister

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

Linjär algebra F1, Q1, W1. Kurslitteratur

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

Att beräkna:: Avstånd

Lite Linjär Algebra 2017

Vektorgeometri för gymnasister

Transkript:

3D: transformationer: ramar, matriser, kvaternioner perspektiv: ortografisk, perspektiv kurvor, ytor: parametriska, kubiska - interpolerande, Bézier, spline Inlämningsuppgift 3 Yngve Sundblad y@kth.se DH2640 Grafik och Interaktionsprogrammering VT 2009

Kursmaterial 3D-transformationer: Kursboken (Angel) kap.4 Kurvor och ytor: Kursboken (Angel) kap.12 (5.ed), kap.11 (4.ed) Projektioner: Kursboken (Angel), kap.5 Ingrid Carlbom & Joseph Paciorek: Planar Geometric Projections and Viewing Transformations, Computing Surveys 10(4), Dec 1978, pp.465-492 (hela -502) (i kursbunten)

Matematiska byggstenar Skalär (storhet) u Punkt (position) P Vektor (längd och riktning) v Transformationsmatris (4x4) M Kvaternion (3D-rotation) q

Skalär- och kryssprodukt Två av de vanligaste vektoroperationerna i datorgrafik v v u u v = (u x v x + u y v y,+u z v z ) = u v cos θ Skalärprodukten är 0 omm faktorerna är ortogonala (vinkelräta) u v θ u v u v = (u y v z u z v y, u z v x u x v z, u x v y u y v x ) Kryssprodukten (en vektor) är ortogonal mot bägge faktorerna v u

Basvektorer Givet 3 st 3-dimensionella basvektorer v 1, v 2, v 3 som alla är vinkelräta mot varandra kan vi skriva vektorn w som w = α 1 v 1 + α 2 v 2 + α 3 v 3 = a T v 1 v 2 v 3 v 3 α 3 v 3 w α1 v 1 där α 2 v 2 v 2 v 1 a T = α 1 α 2 α 3

Ramar (frames) Vi definierar en ram som (v 1, v 2, v 3, P 0 ) där P 0 kallas ramens origo. För punkter i denna ram gäller: P = P 0 + η 1 v 1 + η 2 v 2 + η 3 v 3 = p T v 3 v 1 v 2 v 3 P 0 η 3 v 3 P 0 η 2 v 2 P η 1 v 1 v 1 där p T = η 1 η 2 η 3 1 v 2 (4D homogena koordinater, jfr 3D homogena för punkter i planet)

Ramar (frames) En riktningsvektor w i denna ram skrivs w = a T v 1 v 2 v 3 P 0 där a T = α 1 α 2 α 3 0 Riktningsvektorer definieras alltså oberoende av origo.

u 1 γ11 v 1 Byte av ram Givet två ramar (v 1, v 2, v 3, P 0 ) och (u 1, u 2, u 3, Q 0 ), kan vi skriva γ 13 v 3 v 3 u 1 = γ 11 v 1 + γ 12 v 2 + γ 13 v 3 u 2 = γ 21 v 1 + γ 22 v 2 + γ 23 v 3 u 3 = γ 31 v 1 + γ 32 v 2 + γ 33 v 3 Q 0 = γ 41 v 1 + γ 42 v 2 + γ 43 v 3 + P 0 γ 12 v 2 v 2 v 1 Matrisform: u 1 u 2 u 3 Q 0 = γ 11 γ 12 γ 13 0 γ 21 γ 22 γ 23 0 γ 31 γ 32 γ 33 0 γ 41 γ 42 γ 43 1 v 1 v 2 v 3 P 0 M

Punkter och rambyte Ta nu en punkt P och definiera den i två olika ramar: P = α 1 v 1 + α 2 v 2 + α 3 v 3 + P 0 P = β 1 u 1 + β 2 u 2 + β 3 u 3 + Q 0 i den första ramen i den andra Hur är α- och β-värdena relaterade? P = u 1 u 2 v 1 (enl. ovan) v 1 β β β 1 v v 1 2 3 u = a 2 = b T M 2 v 2 = α T 3 v 1 α 2 α 3 1 3 v 3 v 3 Q 0 P 0 P 0 P 0 v 1 (föregående bild)

Punkter och rambyte b T M v 1 v 2 v 3 P 0 = a T b T M = a T a = M T b v 1 v 2 v 3 P 0 och omvänt: b = (M T ) -1 a D.v.s. P's koordinater i ram 2 fås om man multiplicerar koordinaterna för ram 1 med (M T ) -1.

Exempel Antag att vi har två ramar (v 1, v 2, v 3, P 0 ) och (u 1, u 2, u 3, Q 0 ) och att ramarna är relaterade till varandra enligt följande: v 3 v 2 P 0 Q 0 u 3 M T = u 1 u 2 v 1 0.6 0.8 0 0 0.8-0.6 0 0 0 0 1 0.5 0 0 0 1 u 1 = (3v 1 + 4v 2 )/5 u 2 = (4v 1-3v 2 )/5 u 3 = v 3 Q 0 = P 0 + 0.5v 3 M = (M T ) -1 = 0.6 0.8 0 0 0.8-0.6 0 0 0 0 1 0 0 0 0.5 1 0.6 0.8 0 0 0.8-0.6 0 0 0 0 1-0.5 0 0 0 1

Exemplet Tag nu punkten a = (1 1 0 1) T i den första ramen ( världen ). Vilken är dess motsvarighet i den andra ramen (lokal)? b = (M T ) -1 a b = ger oss 0.6 0.8 0 0 1 0.8-0.6 0 0 a = 1.4 0.2-0.5 1 T 0 rel P 0 0 1-0.5 0, -0.5 rel Q 0 0 0 0 1 P 0 Q 0 v 2 1.4 0.2 1 u 1 v 1 Åt andra hållet: p = (1.4 0.2-0.5 1) T i ram 2. I ram 1 blir den p världen = M T p = (1 1 0 1 ) T v 3 u 3 u 2

Fixram och transformationsram Ofta jobbar man med en "fixram" (t.ex. kameran/utsiktspunkten) och en "transformationsram". Fixramen är fast och transformationsramen tillåts variera. Exempel: Våra koordinater 1 0 0 0 0 1 0 0 0 0 1 -d 0 0 0 1 α 1 α 2 α 3 1 = α 1 α 2 α 3 - d 1 d Fixram Transformationsram M T Punkt i transf.- ramen Motsv. punkt i fixramen

3D-transformationsmatriser(jfr 2D) = = = = = 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 ' ' ' 1 1 0 0 0 1 0 0 0 1 0 0 0 1 1 1 1 ' ' ' z y x s s s z y x z y x z y x t t t z y x z y x z y x z y x z y x T S T M Translation Skalning

3D-rotationsmatriser (tre, en i 2D) x' y' z' 1 = R z (θ) x y z 1 = cosθ sinθ 0 0 sinθ cosθ 0 0 0 0 1 0 0 0 0 1 x y z 1 x' y' z' 1 = R x (θ) x y z 1 = 1 0 0 0 0 cosθ sinθ 0 0 sinθ cosθ 0 0 0 0 1 x y z 1 x' y' z' 1 = R y (θ) x y z 1 = cosθ 0 sinθ 0 0 1 0 0 sinθ 0 cosθ 0 0 0 0 1 x y z 1 Rotation kring z-axeln Rotation kring x-axeln Rotation kring y-axeln

Multipla transformationer (som 2D) Vi kan sätta samman transformationer genom att multiplicera matriserna: 1 0 0 0 0 1 0 0 0 0 1 -d 0 0 0 1 1 0 0 0 0 s 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 s 0 0 0 0 1 -d 0 0 0 1 T S TS = 1 0 0 0 0 s 0 0 0 0 1 -d 0 0 0 1 α 1 α 2 α 3 1 = α 1 sα 2 α 3 - d 1 TS

Multipla transformationer Observera att ordningen på multiplikationen kan spela roll! 1 0 0 0 0 1 0 0 0 0 1 -d 0 0 0 1 1 0 0 0 0 1 0 0 0 0 s 0 0 0 0 1 = 1 0 0 0 0 1 0 0 0 0 s -d 0 0 0 1 T S TS 1 0 0 0 0 1 0 0 0 0 s 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 -d 0 0 0 1 = 1 0 0 0 0 1 0 0 0 0 s -sd 0 0 0 1 S T ST

Att specificera orientering (rotationer) Vi börjar med att pröva yaw-pitch-roll (gir-stig-roll). Antag att flygplanet är modellerat så det initialt "pekar" längs z-axeln. Vi roterar först kring z-axeln (roll), sedan kring y-axeln (yaw), sist kring x-axeln (pitch). Kallas för att arbeta med Euler angles eller Eulermatriser. y z x

Rotation i 3D v Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna (kring x-, y- och z-axlarna) kan sättas ihop till en transformation utgående från rotationsvektorn och rotationsvinkeln

Allmän 3D-rotation - Angel 4.9.4 Om rotationsenhetsvektorn är a = (ax, ay, az) och rotationsvinkeln runt denna vektor är θ roterar man först kring x-axeln till y-planet (x=0) med vinkeln θ x = arctan(ay/az); d= ay 2 +az 2, cos(θ x )=az/d, sin(θ x )=ay/d, sedan kring y-axeln till z-planet med vinkeln θ y = -arcsin(ax); cos(θ y )=d, sin(θ y )=-ax, sedan kring z-axeln med vinkeln θ z = θ sedan tillbaka kring y-axeln med vinkeln -θ y sedan tillbaka kring x-axeln med vinkeln -θ x Alltså blir totala transformationsmatrisen: R x (-θ x ) R y (-θ y ) R z (θ) R y (θ y ) R x (θ x )

Kvaternioner, Angel 4.12 En matematisk struktur som kan beskriva 3D-rotation kring en godtycklig vektor är kvaternioner (quaternions), uppfunna 1843 av irländske matematikern W.R. Hamilton. Detta motsvarar komplexa talens (Euler mfl, 1700-talet), i 2 =-1, användning för att beskriva 2D-rotationer i planet: z = x + iy = r (cos µ + isin µ) Rotation vinkeln θ genom multiplikation med p = cos θ + isin θ p*z = r (cos(µ + θ) + i sin(µ + θ))

Kvaternioner (quaternions) En kvaternion q definieras så här: q = (q 0, q 1, q 2, q 3 ) = q 0 + q 1 i + q 2 j + q 3 k = (q 0, q) där (jfr komplexa tal) i 2 = j 2 = k 2 = -1 ij=k, jk=i, ki=j ji=-k, kj=-i, ik=-j

Kvaternioner - algebra Lite kvaternionalgebra: tag två kvaternioner a och b: a = (q 0, q 1, q 2, q 3 ) = (q 0, q) b = (p 0, p 1, p 2, p 3 ) = (p 0, p) Addition och multiplikation: a + b = (p 0 + q 0, p + q) ab = (p 0 q 0 p q, q 0 p + p 0 q + q p) Norm och invers: a 2 = q 0 2 + q q = q 0 2 +q 1 2 +q 2 2 +q 3 2 a -1 = (1 / a 2 )(q 0, -q)

Kvaternioner - för 3D-rotation Tag en punkt P i 3D. Skapa kvaternionen P θ v p = (0, P) = xi + yj + zk Välj rotationsaxeln v normerad (enhetsvektor) Låt rotationsvinkeln vara θ. Skapa nu kvaternionen r enligt r = (cos(θ/2), sin(θ/2)v) r 2 = 1 r -1 = (cos(θ/2), -sin(θ/2)v)

Kvaternioner - för 3D-rotation Genom lite råräknande visar man att p' = rpr -1 ger samma resultat som sammansatta rotationsmatriserna för att rotera punkten P θ radianer kring vektorn v. Om a och b är kvaternioner som representerar rotation enl. ovan gäller också (analogt med komplexa talen för 2Drotationer) att q = ab är resultatet av att kombinera rotationerna(först a, sedan b). OBS! Angel (både fjärde och femte upplagan) har ett fel i formeln för p' = r p r -1, ska vara sin 2 i sista termen p' =cos 2 (θ/2)p + sin 2 (θ/2)(p v)v + 2 sin(θ/2) cos(θ/2)(v x p) - sin 2 (θ/2) (v x p) x v

Rotationsexempel, matriser Rotation 120 grader runt vektorn (1 1 1)/ 3 d = (2/3) cos θ x = a z / d = 1/ 2, sin θ x = 1/ 2 cos θ y = d = (2/3), sin θ y = -a z = - 1/ 3 θ z = θ = π/3 R x = ((1 0 0 0)(0 1/ 2-1/ 2 0)(0 1/ 2 1/ 2 0)(0 0 0 1)) R y = (( (2/3) 0-1/ 3 0)(0 1 0 0)(1/ 3 0 (2/3) 0)(0 0 0 1)) R z = ((-1/2-3/2 0 0)( 3/2-1/2 0 0)(0 0 1 0)(0 0 0 1)) M = R x (-) R y (-) R z () R y (+) R x (+) = ((0 1 0 0 )(0 0 1 0)(1 0 0 0)(0 0 0 1)) M (x y z 1) = (y z x 1)

Rotationsexemplet, kvaternioner Kvaternioner r = cos(θ /2) + (i sin(θ /2) + j sin(θ /2) + k sin(θ /2))/ 3 = 1/2 (1 + i + j + k) p = i x + j y + k z r -1 = 1/2 (1 - i - j - k) p r -1 = 1/2 (x + y + z) + 1/2 i (x - y + z) + 1/2 j (x + y - z) + 1/2 k (-x + y + z) r p r -1 = 0 + i y + j z + k x = (y, z, x) Stämmer! Övning: Använd formeln för att räkna ut samma sak.

Kvaternioner Det går alltså att konvertera en kvaternion till en rotationsmatris (och tvärtom) Det kan löna sig att lagra orienteringar som kvaternioner: 4 flyttal istället för 3x3 = 9 (för en rotationsmatris) Kvaternioner gör det enkelt att interpolera mellan orienteringar (för animering)!

Projektioner - historia Giotto (1276-1336) Rafael (1483-1520)

Projektioner - historia

Projektioner - historia Brook Taylor, New Principles of Linear Perspective, 1719.

Projektioner Planar Geometric Projections Parallell Perspective Orthographic Oblique 1-pt 2-pt 3-pt Multiview Axonometric Cavalier Cabinet Isometric Dimetric Trimetric Alla projektionerna finns beskrivna med illustrativa figurer i Carlbom-Pacioreks artikel och i Angel 5.1.

Perspektivprojektion Projektor på ändligt avstånd. Storlek minskar med avstånd från projektionsytan. Avstånd och vinklar bevaras inte i projektionen. Parallella linjer konvergerar i fjärrpunkt (vanishing point) Här enpunkts (ett projektionsplan), finns också två- och tre-, se Carlbom-Paciorek

Perspektivprojektion, Angel 5.4 Antag att vi projicerar punkten P på ett bildplan som ligger d enheter från origo och är parallellt med x-y-planet: y y Bildplan z d x z d P p P

Perspektivprojektion Likformiga trianglar: P = x y z 1 T z y d z P p y p P y p d = y p = Analogt för x p. Så den projicerade punkten blir: P p = x/(z/d) y/(z/d) d 1 T y P p = x p y p d 1 T y z yd z y = (z / d)

Perspektivprojektion Vi vill kunna skriva perspektivprojektionen som en matris M. För att kunna göra det måste vi införa en normeringsoperation Om resultatet av en transformation blir en punkt P = x y z w T med w skilt från 1 ser vi till att alltid dividera med w innan vi fortsätter, d.v.s. P = x/w y/w z/w 1 T

Perspektiv-projektionsmatris z x M P p = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1/d 0 x y z 1 = x y z z/d Eftersom z/d 1 dividerar vi alla komponenterna med z/d innan vi använder punkten så att vi får x/(z/d) y/(z/d) d 1 Detta kallas perspektivdivision i OpenGL. z x

Ortografisk projektion Projektorerna är vinkelräta mot projektionsytan (på oändligt avstånd ). I enklaste formen är det en eller flera vyer (multiview) med projektionsplan parallella till objektets huvudytor. Avstånd och vinklar bevaras i projektionerna. Typiskt exempel: maskinritningar Axonometrisk ortografisk: Fortfarande vinkelräta projektorer men objektet vridet så att man ser flera ytor. projektionsplan symmetriskt till alla tre huvudytorna:isometrisk projektionsplan symmetriskt till två av huvudytorna: dimetrisk projektionsplan utan sådan symmetri: trimetrisk Parallellitet bevaras, inte vinklar & avstånd (samma förkortning)

Ortografisk-projektionsmatris Här är y p =y och x p =x och z p =-d så vi får M O p = 1 0 0 0 0 1 0 0 0 0 0 -d 0 0 0 1 x y z 1 = x y -d 1 (i boken är d satt till 0)

Kurvor och ytor Angel, kap.11 Explicit form Implicit form Parametrisk form Uppdelningsprocedur Polynom Catmull-Clark Loop Kubiska (grad 3) Generella (grad d) Interpolerande Hermite Bezier B-Spline Generell B-Spline Uniform NURBS

Representation av kurvor Explicit Generellt y = f(x) Exempel y = x 1 y Implicit f(x, y) = 0 x - y = 0 Parametrisk x = f x (u) y = f y (u) u min u u max x = u y = u 0 u 1 0 0 1 x I 3D, med z, lägg till: explicit: z = g(x); implicit: f(x, y,z) =0 & g(x, y,z) = 0; parameter z = f z (u)

Parametriska kurvor Om vi deriverar uttrycket för kurvan p(u) = f x (u) f y (u) får vi en vektor som definierar kurvans tangent: dp(u) du = df x (u) du df y (u) du

Exempel p(u) = u u 2 dp(u) du = 1 2u 0 u 1 I u = 0.5 får vi tangenten 1 1

Exempel

Parametriska polynomkurvor Då p(u) är ett polynom i u kallas kurvan polynomkurva. c x0 + uc x1 + u 2 c x2 +... + u n c xn p(u) = f x (u) f y (u) f z (u) = c y0 + uc y1 + u 2 c y2 +... + u n c yn c z0 + uc z1 + u 2 c z2 +... + u n c zn 0 u 1 Polynomkurvor, visar det sig, har egenskaper som är intressanta för datorgrafik och CAD/CAM. Främst används tredjegrads- (kubiska) polynom.

Interpolerande kubiska polynom Antag att vi har fyra styrpunkter p 0, p 1, p 2 och p 3 och att vi vill att kurvan ska gå genom dessa punkter. p0 p 2 p 3 p 1 p 0 = (p 0x p 0y p 0z ) T, p 1 = (p 1x p 1y p 1z ) T, p 2 = (p 2x p 2y p 2z ) T, p 3 = (p 3x p 3y p 3z ) T Vi samlar koordinaterna i tre vektorer: p x = p 0x p 1x p 2x p 3x p y = p 0y p 1y p 2y p 3y p z = p 0z p 1z p 2z p 3z

Interpolerande polynomkurvor Vi bestämmer att kurvan ska gå genom styrpunkterna vid u = 0, u = 1/3, u = 2/3 och u = 1. u = 0 p 2 p 0 p 3 p 1 u = 1 u = 1/3 u = 2/3 Vilka polynomkoefficienter ska vi ha?

Interpolerande polynomkurvor Låt oss börja med x-komponenten. Vi hade att f x (u) = c x0 + uc x1 + u 2 c x2 + u 3 c x3 och vi vill ha f x (0) = p 0x f x (1/3) = p 1x f x (2/3) = p 2x f x (1) = p 3x u = 0: u = 1: p 0x = c x0 p 3x = c x0 + c x1 + c x2 + c x3 u = 1/3: p 1x = c x0 + (1/3)c x1 + (1/3) 2 c x2 + (1/3) 3 c x3 u = 2/3: p 2x = c x0 + (2/3)c x1 + (2/3) 2 c x2 + (2/3) 3 c x3

Interpolerande polynomkurvor Löser man ekvationssystemet får man c 0x = p 0x c 1x = 5.5p 0x + 9p 1x 4.5p 2x + p 3x c 2x = 9p 0x 22.5p 1x + 18p 2x 4.5p 3x c 3x = 4.5p 0x + 13.5p 1x 13.5p 2x + 4.5p 3x Koefficientmatrisen 1 0 0 0-5.5 9-4.5 1 9-22.5 18-4.5-4.5 13.5-13.5 4.5 kallas interpolationsgeometrimatris och kan användas vid all sådan interpolation y- och z-komponenterna får samma värden. Kurvan som har dessa c-koefficienter sägs interpolera de fyra styrpunkterna.

Exempel y p 0 = (0 0) T p 1 = (1 0) T p 2 = (1 1) T p 3 = (0 1) T 1 0 p 3 p 2 p 0 p 1 0 1 x

Exemplet f x (u) = c x0 + uc x1 + u 2 c x2 + u 3 c x3 p 0 = (0 0) T p 1 = (1 0) T p 2 = (1 1) T p 3 = (0 1) T c 0x = p 0x c 1x = 5.5p 0x + 9p 1x 4.5p 2x + p 3x c 2x = 9p 0x 22.5p 1x + 18p 2x 4.5p 3x c 3x = 4.5p 0x + 13.5p 1x 13.5p 2x + 4.5p 3x c 0x = 0 c 1x = 5.5 0 + 9 1 4.5 1 + 0 = 4.5 c 2x = 9 0 22.5 1 + 18 1 4.5 0 = 4.5 c 3x = 4.5 0 + 13.5 1 13.5 1 + 4.5 0 = 0

Exemplet f x (u) = 0 + 4.5u 4.5u 2 + 0 u 3 f y (u) = 0 3.5u + 13.5u 2 9u 3

Interpolationspolynomet är exempel på en parametrisk kubisk polynomkurva dvs är en kurva på formen p(u) = b 0 (u)p 0 + b 1 (u)p 1 + b 2 (u)p 2 + b 3 (u)p 3 där p i är kurvans styrpunkter (som interpolationspolynomet går igenom men som kan styra på annat sätt, se Hermite, Bézier, splines) och b i (u) är kurvans blandningsfunktion.

Blandningsfunktion, enkelt exempel Funktion b(u) som visar hur varje styrpunkt bidrar till kurvan när u sveps från 0 till 1. Exempel: En kurva som interpolerar två styrpunkter: f x (u) = (1 u)p 0x + up 1x f y (u) = (1 u)p 0y + up 1y P 0 P 1 b 0 (u) = 1 u b 1 (u) = u

Blandningsfunktioner, interpolation p 2 u = 0 p 0 p 3 p 1 u = 1 u = 1/3 u = 2/3 Blandningsfunktioner b0 = -9(u - 1/3)(u 2/3)(u-1) b1 = 27u(u-2/3)(u-1)/2 b2 = -27u(u-1/3)(u-1)/2 b3 = 9u(u - 1/3)(u 2/3)

Sammanlänkning av kurvor Icke-kontinuerlig C 0 -kontinuerlig C 1 -kontinuerlig (derivatan) C 2 -kontinuerlig också krökning (andraderivatan)

Hermitekurvor Fås om man kräver C 1 -kontinuitet. Kurvans ekvation är (i 2D) f x (u) = c x0 + uc x1 + u 2 c x2 + u 3 c x3 f y (u) = c y0 + uc y1 + u 2 c y2 + u 3 c y3 Vi behåller första och sista styrpunkten: p 0 = (p 0x p 0y ) T p 3 = (p 3x p 3y ) T

Hermitekurvor Sedan väljer vi tangenten i p 0 och p 3 explicit, d.v.s. df(u=0) du df x (u) du = df y (u) du u = 0 u = 0 p 0x p 0y df(u=1) du df x (u) du = df y (u) du u = 1 u = 1 p 3x p 3y

Hermitekurvor För x-komponenten är kurvans ekvation f x (u) = c x0 + uc x1 + u 2 c x2 + u 3 c x3 och dess derivata är f x (u) = c x1 + 2uc x2 + 3u 2 c x3 så p 0x = f x (0) = c x0 p 3x = f x (1) = c x0 + c x1 + c x2 + c x3 p 0x = f x (0) = c x1 p 3x = f x (1) = c x1 + 2c x2 + 3c x3

Hermitekurvor Löser vi ekvationssystemet får vi f x (u) = 1 u u 2 u 3 1 0 0 0 0 0 1 0 3 3 2 1 2 2 1 1 Hermite-geometri matris p 0x p 1x p 0x p 1x y- och z-komponenterna blir samma.

Sammanlänkning av kurvor Vi kan få C 1 -kontinuitet genom att sätta samman två Hermitekurvor där tangenten är densamma i P 3 för första kurvan och P 0 för andra kurvan: P 3 P 0 P 3 P 0

Bézierkurvor Samma som Hermite men specificeras genom att tangenterna definieras med linjer vars andra ändar är styrpunkter Derivatorna blir p 1 p 2 dp 0 du dp 3 du = (p 1 p 0 )/(1/3) = (p 3 p 2 )/(1/3) p 0 p 3

Bézierkurvor f x (u) = c x0 + uc x1 + u 2 c x2 + u 3 c x3 f x (u) = c x1 + 2uc x2 + 3u 2 c x3 p 0x = c x0 p 1x = c x0 + c x1 + c x2 + c x3 3(p 1x p 0x ) = f x (0) = c x1 3(p 3x p 2x ) = f x (1) = c x1 + 2c x2 + 3c x3

Bézierkurvor Lösningen blir f x (u) = 1 u u 2 u 3 1 0 0 0 3 3 0 0 3 6 3 0 1 3 3 1 p 0x p 1x p 2x p 3x Bézier-geometrimatris Blandningsfunktioner b0 = (1-u) 3 b1 = 3u(1-u) 2 b2 = 3 u 2 (1-u) b3 = u 3

Kubiska B-splinekurvor En nackdel med Hermitekurvor är att C 1 -kontinuitet inte alltid räcker. C 2 -kontinuitet (mellan kan åstadkommas genom att man släpper kravet att kurvan ska interpolera slutpunkterna på kurvan och ser till att andraderivatan blir lika för den spline som når en punkt från ena hållet som för den spline som utgår åt andra hållet. p i-1 p i p i+1 p i+2

Kubiska B-splinekurvor Se boken för härledningar: f x (u) = 1 u u 2 u 3 1/6 2/3 1/6 0 1/2 0 1/2 0 1/2 1 1/2 0 1/6 1/2 1/2 1/6 p i-2 p i-1 p i p i+1 B-spline-geometrimatris Blandningsfunktioner b0 = (1-u) 3 / 6 b1 = (4-6u 2 + 3u 3 ) / 6 b2 = (1 + 3u + 3u 2-3u 3 ) / 6 b3 = u 3 / 6

Exempel

Ytor Explicit Generellt z = f(x,y) Exempel z=xy Implicit f(x, y, z) = 0 x 2 +y 2 +z 2-1 = 0 Parametrisk x = f x (u,v) y = f y (u,v) z = f z (u,v) u min u u max x = u+v y = u-v z = u 2 +v 2 0 u 1 p(u,v) = f x (u,v) f y (u,v) f z (u,v) z u v x

Parametriska ytor De vektorer vi får om vi deriverar m.a.p. u och v definierar ytans tangentplan: p(u,v) u = f x (u,v) u f y (u,v) u f z (u,v) u p(u,v) v = f x (u,v) v f y (u,v) v f z (u,v) v N(u,v) = p(u,v) u p(u,v) v är ytans normal.

Exempel

Kubiska polynomytor p(u,v) = f x (u, v) f y (u, v) = f z (u, v) 3 i = 0 3 j = 0 c xij c yij c zij u i v j 0 u 1 0 v 1

Interpolerande polynomytor Kräver 16 styrpunkter: u p 10 p 20 p 30 p 00 v p 01 p 02 p 03 p 13 p 23 p 33

Interpolerande polynomytor Om vi sätter v = 0 får vi en kurva som ska interpolera punkterna p 00, p 10, p 20 och p 30. u p 10 p 20 p 30 v = 0 p 00 v p 01 p 02 p 13 p 23 p 33 p 03

Interpolerande polynomytor Sätter vi v = 1 får vi en kurva som måste interpolera punkterna p 03, p 13, p 23 och p 33. u p 10 p 20 p 30 p 00 v = 1 v p 01 p 02 p 13 p 23 p 33 p 03

Interpolerande polynomytor Lägger man till v = 1/3 och v = 2/3 får man ett linjärt ekvationssytem. När man löser detta (se boken) får man koefficienterna för polynomen.

Interpolerande polynomytor

Bézierytor På motsvarande sätt som för interpolerande ytor (se boken).

Inlämningsuppgift 3