Homogena koordinater och datorgrafik

Relevanta dokument
Mer om geometriska transformationer

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

Transformationer i R 2 och R 3

Geometriska transformationer

Några geometriska konstruktioner i R 3

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

Veckoblad 3, Linjär algebra IT, VT2010

Kurvor, fält och ytor

Platonska kroppar med Matlab

LINJÄRA AVBILDNINGAR

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

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

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

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

Vektorgeometri för gymnasister

TANA17 Matematiska beräkningar med Matlab

1 Linjära ekvationssystem. 2 Vektorer

Modul 1: Komplexa tal och Polynomekvationer

SF1624 Algebra och geometri

Vektorgeometri för gymnasister

Chalmers tekniska högskola Datum: kl Telefonvakt: Linnea Hietala MVE480 Linjär algebra S

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

Transformationer i 3D. Gustav Taxén

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

KTH, Matematik. Övningar till Kapitel , 6.6 och Matrisframställningen A γ av en rotation R γ : R 2 R 2 med vinkeln γ är

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

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

Parametriserade kurvor

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

UPG5 och UPG8 Miniprojekt 1: 2D datorgrafik

4x az = 0 2ax + y = 0 ax + y + z = 0

15 februari 2016 Sida 1 / 32

Linjär algebra med MATLAB

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

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

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

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

LYCKA TILL! kl 8 13

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

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.

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.

1 basen B = {f 1, f 2 } där f 1 och f 2 skall uttryckas i koordinater i standardbasen.

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

Veckoblad 1, Linjär algebra IT, VT2010

Detta cosinusvärde för vinklar i [0, π] motsvarar α = π 4.

TAIU07 Matematiska beräkningar med Matlab

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

Robotarm och algebra

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

Matriser och linjära ekvationssystem

Lösningar till utvalda uppgifter i kapitel 1

Minsta-kvadratmetoden

Linjär Algebra M/TD Läsvecka 2

SF1624 Algebra och geometri Lösningsförslag till tentamen Lördagen den 5 juni, 2010 DEL A

3D: transformationer:

Linjär algebra på några minuter

Exempel :: Spegling i godtycklig linje.

Linjär algebra på 2 45 minuter

Affina avbildningar och vektorgrafik

1 Grundläggande kalkyler med vektorer och matriser

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.

Övningar. c) Om någon vektor i R n kan skrivas som linjär kombination av v 1,..., v m på precis ett sätt så. m = n.

Vektorgeometri för gymnasister

Linjär Algebra, Föreläsning 2

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

1. (a) Bestäm alla värden på c som gör att matrisen A(c) saknar invers: c 1

Exempel :: Spegling i godtycklig linje.

Grafritning kurvor och ytor

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

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

Mer om analytisk geometri

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

Linjär Algebra M/TD Läsvecka 1

Linjärisering, Jacobimatris och Newtons metod.

! &'! # %&'$# ! # '! &!! #

(d) Mängden av alla x som uppfyller x = s u + t v + (1, 0, 0), där s, t R. (e) Mängden av alla x som uppfyller x = s u där s är ickenegativ, s 0.

Lösningsforslag till tentamen i SF1624 den 22/ e x e y e z = 5e x 10e z = 5(1, 0, 2). 1 1 a a + 2 2a 4

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

Vektorgeometri för gymnasister

SF1624 Algebra och geometri Bedömningskriterier till tentamen Fredagen den 22 oktober, 2010

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

16.7. Nollrum, värderum och dimensionssatsen

Facit/lösningsförslag

Kort repetition av basbyte, nu med modern teknologi

SKRIVNING I VEKTORGEOMETRI

Vektorgeometri för gymnasister

SF1624 Algebra och geometri Lösningsförsag till modelltentamen

Version Linjär algebra kapiltet från ett ODE-kompendium. Mikael Forsberg

Mer om funktioner och grafik i Matlab

SF1624 Algebra och geometri

SF1624 Algebra och geometri Bedömningskriterier till tentamen Tisdagen den 15 december, 2009

M = c c M = 1 3 1

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

Uppsala Universitet Matematiska Institutionen Thomas Erlandsson

0 Allmänt. Följande delar behöver man kunna utöver avsnitten som beskrivs senare i dokumentet.

Lite Linjär Algebra 2017

Föreläsn. anteckn. HT13. Vecka 6-7. Egenvärden och Egenvektorer. Slumpvandringar på Grafer. Kap. 8-9

Del 1: Godkäntdelen. TMV142 Linjär algebra Z

1. För vilka värden på konstanterna a och b är de tre vektorerna (a,b,b), (b,a,b) och (b,b,a) linjärt beroende.

Transkript:

Linjär algebra, AT3 2011/2012 Matematiska vetenskaper Inledning Homogena koordinater och datorgrafik Vi såg tidigare på några geometriska transformationer; rotation, skalning, translation och projektion. Rotation och skalning är linjära avbildningar och vi såg på standardmatriser för dessa, däremot är ju translation inte en linjär avbildning. Vi såg också på ortogonal projektion i R 3 på ett plan och detta är en linjär avbildning om och ast om planet går genom origo. Det är väldigt praktiskt att kunna beskriva en transformation med en matrismultiplikation. Med s.k. homogena koordinater kan vi beskriva även translation och projektion på ett plan som inte går genom origo med hjälp av matrismultiplikation. Affina avbildningar och homogena koordinater En avbildning F(x) = Ax + b kallas affin. Vi har redan sett exempel på sådana bl.a. i samband med matrisiterationer. En affin avbildning F(x) = Ax + b kan beskrivas med matrismultiplikation om vi inför en extra koordinat w enligt [ ] [ ][ ] ˆx A b x = ŵ 0 T 1 w där 0 T är en rad med nollor. Vi kommer då ha ˆx = Ax + bw ŵ = w Så om låter vi w = 1 så får vi ˆx = Ax + b och ŵ = 1. Detta kallas homogena koordinater och vi kan läsa om detta i Lay kap. 2.7. Translation med en vektor t ges av den affina avbildningen x 1 t 1 F(x) = x + t = x 2 + t 2 x 3 t 3 Vi har A = I enhetsmatrisen och b = t, dvs. translationsvektorn, och vi kan beskriva translationen med matrismultiplikation [ ] [ ][ ] ˆx I t x = ŵ 0 T (1) 1 w Uppgift 1. Bestäm inversen till matrisen i (1). Tolka vad multiplikation med inversen motsvarar geometriskt. 1

Tidigare bestämde vi ortogonala projektionen på ett plan där a, b, c och d är konstanter. ax + by + cz = d Om x är den punkt vi projicerar och ˆx är projektionen så gäller ˆx = x + αn, där n = (a, b, c) är en normalvektor till planet. Om d = 0, dvs. planet går genom origo, har vi Eftersom n x är en skalär så gäller ˆx = x α = d n x n n ˆx = x + αn = x n x n n n (n x) n n n = x 1 n (n x) n n Vidare gäller att n x = n T x, dvs. skalärprodukten kan beräknas genom att n T som är en radvektor matrismultipliceras med kolonnvektorn x och vi får ˆx = x 1 n n n (nt x) = x 1 ( n n (nnt )x = I 1 ) n n nnt x där vi utnyttjade att n (n T x) = (nn T )x. Observera att nn T är en matris. Vi har kommit fram till ˆx = ( I 1 ) n n nnt x = Px Alltså en linjär avbildning med standardmatrisen P. Om d 0, dvs. planet går inte genom origo, har vi ˆx = x + αn = x + d n x n n n = ( I 1 n n nnt Detta är en affin avbildning som vi beskriver med [ ] [ ˆx P βn = ŵ 0 T 1 dvs. med hjälp av matrismultiplikation. ][ x w ) x + ] d n = Px + βn n n Uppgift 2. En linjär avbildning T(x) = Ax kan också bäddas in med homogena koordinater. Hur ser blockmatrisen ut? Uppgift 3. Läs nu Lay kap. 2.7 ordentligt, speciellt om perspektiv projektion. Där beskrivs hur man får fram perspektivprojektion av en 3-dimensionell figur på xy-planet när betraktaren är i punkten (0, 0, d). Generalisera nu detta till en godtycklig betraktelsepunkt (b, c, d). Ni får förutsätta att figuren är mellan betraktaren och planet. Observera hur boken lägger koordinatsystemet. 2

Datorgrafik Man kan i Matlab åstadkomma relativt avancerad datorgrafik. Vi har ingen möjlighet att hinna med att se på allt utan vi får nöja oss med att rita några figurer och samtidigt se på några olika kommandon för grafik. Läroböcker om Matlab ger dåligt stöd för mer avancerad grafik och vi får istället gå till hjälptexterna i Matlab och läsa. Det finns däremot en omfattande litteratur om datorgrafik som eget ämne. Vi skall ge två lite större exempel. Det första exemplet, som kommer i denna text, är en tub runt en kurva i rummet och det andra exemplet, som kommer i texten för nästa vecka, är en ikosaeder som vi ritar med stänger och noder. Men först ser vi hur man kan välja projektionstyp och betraktelsepunkt i en bild vi redan har ritat (några lika stora kuber utströdda i rummet). camproj orthographic campos([15-40 10]) Lika stora objekt kommer se lika stora ut oavsett hur långt borta de är från betraktaren. Detta är standard projektionstypen i Matlab. Vi kan välja perspektivprojektion med camproj perspective campos([15-40 10]) Lika stora objekt kommer se mindre ut ju längre bort från betraktaren de ligger. Skillnaden är inte så stor, men det är ändå det som behövs för att göra en realistisk bild av t.ex. ett hus. I bilden ovan har vi lagt på ljus med camlight och valt material med material enligt camlight headlight % left, right material shiny % metal, dull Läs gärna i hjälptexterna om kommandona ovan. Uppgift 4. Rita nu några bollar i rummet, lägg på lite belysning, välj projektionstyp och rotera det hela några varv. Använd sphere. 3

Något liknande det här kommer ni nog fram till Vi kan rotera bollsamlingen genom att använda camorbit på olika sätt camlight left for i=1:200 camorbit(5,0) drawnow; pause(0.05) h=camlight( left ); for i=1:200 camorbit(5,0) camlight(h, left ) drawnow; pause(0.05) Pröva och skriv in koden. Alternativet till vänster lägger på belysning och sedan följer vi med kameran runt. I alternativet till höger följer även belysningskällan med kameran runt. Pausen väljer man så att det går lagom fort på datorn man använder. Tub runt kurva i R 3 Nu till vårt exempel. Vi gör en funktion som lägger en tub runt en kurva x(t) i rummet. Funktionen behöver som indata förutom kurvan x(t), beräknad i ett antal punkter, även första derivatan x (t), beräknad i samma punkter. Radien r(t) på tuben kan få variera längs kurvan och även radiens värde för de olika punkterna skall vara indata. Vidare skall antal segment i tuben m anges. function [U,V,W]=tuben(x,y,z,r,m,dx,dy,dz) l=length(x);s=linspace(0,2*pi/1,m); U=zeros(l,m);V=U;W=U; p=[x(1);y(1);z(1)]; t=[dx(1);dy(1);dz(1)]; if sum(t ==[0 0 0])==3 error([ kurvan saknar tangent i punkten [ num2str(p) ]^T ]) 4

N=null(t );n=n(:,1);b=n(:,2);t=t/norm(t) % Det första lokala koordinatsystemet XI=p*ones(1,m)+n*r(1)*cos(s)+b*r(1)*sin(s); U(1,:)=XI(1,:);V(1,:)=XI(2,:);W(1,:)=XI(3,:); for k=2:l t1=t;n1=n;b1=b; p=[x(k);y(k);z(k)]; t=[dx(k);dy(k);dz(k)];t=t/norm(t); if sum(t ==[0 0 0])==3 error([ kurvan saknar tangent i punkten [ num2str(p) ]^T ]) d=norm(t-t1); if d~=0 % Om d=0 så behåller vi n och b a=2*asin(d/2); % Den nya tangenten t har vridit vinkeln a i % förhållande till gamla tangenten v=cross(t1,t);v=v/norm(v); % Rotationsaxeln u=cross(v,t1); M=[cos(a) -sin(a) 0;sin(a) cos(a) 0;0 0 1]; % Rotationsmatrisen i ON-basen {t1, u, v} för rotation % vinkeln a kring axeln v (svarar mot z-axeln) P=[t1 u v]; % Basbytesmatrisen R=P*M*P ; % Rotationsmatrisen i standardbasen n=r*n1;b=r*b1; % "Nya basvektorer (roterade vinkeln a), % notera att t=r*t1 XI=p*ones(1,m)+n*r(k)*cos(s)+b*r(k)*sin(s); U(k,:)=XI(1,:);V(k,:)=XI(2,:);W(k,:)=XI(3,:); Vi väljer kurvan x(t) = (cos(t), sin(t), at 5/4 ), 0 t 4π, med a = 1 och en radie på tuben r(t) 4 som varierar längs kurvan. Derivan blir x (t) = ( sin(t), cos(t), 5 4 at1/4 ). Vi väljer n = 40 punkter längs kurvan och tar m = 25 tubsegment. Vi ritar upp, lägger på lite belysning med camlight och väljer projektionstyp med camproj enligt n=150;m=25;a=0.25;t=linspace(0,4*pi,n); x=cos(t);z=sin(t);y=a*t.^(5/4); dx=-sin(t);dz=cos(t);dy=a*(5/4)*t.^(1/4); r=0.5*(1-0.3*sin(5*t)); [X,Y,Z]=tuben(x,y,z,r,m,dx,dy,dz); figure(1) hold off surf(x,y,z, FaceAlpha,0.85) hold on plot3(x,y,z, r, LineWidth,2) axis equal vis3d 5

camlight left camproj perspective shg och får bilden Pröva gärna och skriv in koden för att rotera kameran runt objektet. Uppgift 5(a). Gör nu två torusar som kedjar i varandra, dvs. gör två olika kurvor som ni lägger tuber runt. Lägg på lite belysning, välj projektionstyp och rotera det hela några varv. (b). Hitta på en egen kurva i rummet och lägg en tub runt den. Låt gärna radien variera längs kurvan. Lek! 6