Transformationsmatris
I linjär algebra kan linjära transformationer representeras av matriser . Om är en linjär transformation mappning av till och är en kolumnvektor med poster
Används
Matriser tillåter att godtyckliga linjära transformationer visas i ett konsekvent format, lämpligt för beräkning. Detta gör också att transformationer kan komponeras enkelt (genom att multiplicera deras matriser).
Linjära transformationer är inte de enda som kan representeras av matriser. Vissa transformationer som är +1 icke-linjära på ett n-dimensionellt euklidiskt rymd Rn kan representeras som linjära transformationer på det n + 1-dimensionella rummet Rn . Dessa inkluderar både affina transformationer (som translation ) och projektiva transformationer . Av denna anledning används 4×4-transformationsmatriser i stor utsträckning i 3D-datorgrafik . Dessa n +1-dimensionella transformationsmatriser kallas, beroende på deras tillämpning, affina transformationsmatriser , projektiva transformationsmatriser eller mer allmänt icke-linjära transformationsmatriser . Med avseende på en n -dimensionell matris kan en n +1-dimensionell matris beskrivas som en förstärkt matris .
Inom de fysiska vetenskaperna är en aktiv transformation en som faktiskt ändrar den fysiska positionen för ett system och är vettig även i frånvaro av ett koordinatsystem medan en passiv transformation är en förändring i koordinatbeskrivningen av det fysiska systemet ( förändring av bas). ). Skillnaden mellan aktiva och passiva transformationer är viktig. Som standard, med transformation , menar matematiker vanligtvis aktiva transformationer, medan fysiker kan mena antingen.
Med andra ord avser en passiv transformation beskrivning av samma objekt sett från två olika koordinatramar.
Att hitta matrisen för en transformation
Om man har en linjär transformation i funktionell form, är det lätt att bestämma transformationsmatrisen A genom att transformera var och en av vektorerna i standardbasen med T och sedan infoga resultatet i kolumner i en matris. Med andra ord,
Till exempel är funktionen en linjär transformation. Att tillämpa ovanstående process (antag att n = 2 i det här fallet) avslöjar det
Matrisrepresentationen av vektorer och operatorer beror på den valda basen; en liknande matris kommer att resultera från en alternativ grund. Metoden för att hitta komponenterna förblir dock densamma.
För att utveckla, vektor kan representeras i basvektorer, koordinater :
Uttryck nu resultatet av transformationsmatrisen A på i den givna basen:
Elementen i matris A bestäms för en given bas E genom att tillämpa A på varje svaret vektor
Denna ekvation definierar de önskade elementen, , i den j -te kolumnen i matrisen A .
Egenbas och diagonal matris
Ändå finns det en speciell grund för en operator där komponenterna bildar en diagonal matris och därmed multiplikationskomplexiteten reduceras till n . Att vara diagonal betyder att alla koefficienter utom är nollor som bara lämnar en term i summan ovan. De överlevande diagonala elementen, , är kända som egenvärden och betecknas med i den definierande ekvationen, som reduceras till . Den resulterande ekvationen är känd som egenvärdesekvation . Egenvektorerna och egenvärdena härleds från det via det karakteristiska polynomet .
Med diagonalisering är det ofta möjligt att översätta till och från egenbaser.
Exempel i 2 dimensioner
De vanligaste geometriska transformationerna som håller origo fast är linjära, inklusive rotation, skalning, skjuvning, reflektion och ortogonal projektion; om en affin transformation inte är en ren översättning håller den någon punkt fixerad, och den punkten kan väljas som ursprung för att göra transformationen linjär. I två dimensioner kan linjära transformationer representeras med hjälp av en 2×2 transformationsmatris.
Stretching
En sträcka i xy -planet är en linjär transformation som förstorar alla avstånd i en viss riktning med en konstant faktor men som inte påverkar avstånden i vinkelrät riktning. Vi betraktar bara sträckor längs x-axeln och y-axeln. En sträcka längs x-axeln har formen x' = kx ; y' = y för någon positiv konstant k . (Observera att om k > 1 så är detta verkligen en "sträckning"; om k < 1 är det tekniskt sett en "kompression", men vi kallar det fortfarande en sträcka. Dessutom, om k = 1 är transformationen en identitet, dvs det har ingen effekt.)
Matrisen associerad med en sträcka med en faktor k längs x-axeln ges av:
På liknande sätt har en sträcka med en faktor k längs y-axeln formen x' = x ; y' = ky , så matrisen associerad med denna transformation är
Klämning
Om de två sträckorna ovan kombineras med ömsesidiga värden, representerar transformationsmatrisen en squeeze-mappning :
Rotation
För rotation med en vinkel θ moturs (positiv riktning) kring origo är den funktionella formen och . Skrivet i matrisform blir detta:
På liknande sätt, för en rotation medurs (negativ riktning) kring origo, är den funktionella formen och matrisformen är:
Dessa formler antar att x -axeln pekar åt höger och y -axeln pekar uppåt.
Klippning
För skjuvkartering (visuellt liknar lutning) finns det två möjligheter.
En skjuvning parallell med x- axeln har och . Skrivet i matrisform blir detta:
En skjuvning parallell med y -axeln har och , som har matrisform:
Reflexion
För reflektion om en linje som går genom origo, låt vara en vektor i riktningen för linje. Använd sedan transformationsmatrisen:
Ortogonal projektion
För att projicera en vektor ortogonalt på en linje som går genom origo, låt vara en vektor i linjens riktning. Använd sedan transformationsmatrisen:
Liksom med reflektioner är den ortogonala projektionen på en linje som inte passerar genom origo en affin, inte linjär, transformation.
Parallella projektioner är också linjära transformationer och kan enkelt representeras av en matris. Det är dock inte perspektivprojektioner och för att representera dessa med en matris homogena koordinater användas.
Exempel i 3D-datorgrafik
Rotation
Matrisen för att rotera en vinkel θ kring vilken axel som helst som definieras av enhetsvektorn ( x , y , z ) är
Reflexion
För att reflektera en punkt genom ett plan (som går genom origo) kan man använda I är 3×3-identitetsmatrisen och är den tredimensionella enhetsvektorn för planets vektornormal. Om L 2 -normen för , och är enhet, kan transformationsmatrisen uttryckas som:
Observera att det här är speciella fall av en hushållarreflektion i två och tre dimensioner. En reflektion om en linje eller ett plan som inte går genom origo är inte en linjär transformation - det är en affin transformation - som en 4×4 affin transformationsmatris kan den uttryckas enligt följande (förutsatt att normalen är en enhetsvektor) :
Om den 4:e komponenten i vektorn är 0 istället för 1, så reflekteras bara vektorns riktning och dess storlek förblir oförändrad, som om den speglas genom ett parallellt plan som går genom origo. Detta är en användbar egenskap eftersom den tillåter transformation av både positionsvektorer och normala vektorer med samma matris. Se homogena koordinater och affina transformationer nedan för ytterligare förklaring.
Att komponera och invertera transformationer
En av de främsta motiven för att använda matriser för att representera linjära transformationer är att transformationer sedan enkelt kan komponeras och inverteras.
Sammansättning åstadkoms genom matrismultiplikation . Rad- och kolumnvektorer styrs av matriser, rader till vänster och kolumner till höger. Eftersom text läser från vänster till höger är kolumnvektorer att föredra när transformationsmatriser är sammansatta:
Om A och B är matriserna för två linjära transformationer, så ges effekten av att först applicera A och sedan B på en kolumnvektor av:
Med andra ord är matrisen för den kombinerade transformationen A följt av B helt enkelt produkten av de individuella matriserna.
När A är en inverterbar matris finns det en matris A −1 som representerar en transformation som "ångrar" A eftersom dess sammansättning med A är identitetsmatrisen . I vissa praktiska tillämpningar kan inversion beräknas med hjälp av allmänna inversionsalgoritmer eller genom att utföra inversa operationer (som har uppenbar geometrisk tolkning, som att rotera i motsatt riktning) och sedan komponera dem i omvänd ordning. Reflektionsmatriser är ett specialfall eftersom de är sina egna inverser och behöver inte beräknas separat.
Andra typer av transformationer
Affina transformationer
För att representera affina transformationer med matriser kan vi använda homogena koordinater . Detta innebär att representera en 2-vektor ( x , y ) som en 3-vektor ( x , y , 1) och på liknande sätt för högre dimensioner. Med detta system kan översättning uttryckas med matrismultiplikation. Den funktionella formen blir:
Alla vanliga linjära transformationer ingår i uppsättningen affina transformationer och kan beskrivas som en förenklad form av affina transformationer. Därför kan vilken linjär transformation som helst också representeras av en generell transformationsmatris. , moturs från ovan fylla det extra utrymmet med nollor förutom det nedre högra hörnet, som måste sättas till 1. Till exempel blir rotationsmatrisen :
Genom att använda transformationsmatriser som innehåller homogena koordinater blir översättningar linjära och kan således sömlöst blandas med alla andra typer av transformationer. Anledningen är att det verkliga planet är mappat till w = 1 -planet i det verkliga projektiva rummet, och så kan translation i det verkliga euklidiska rummet representeras som en skjuvning i det verkliga projektiva rummet. Även om en översättning är en icke- linjär transformation i ett 2D eller 3D euklidiskt rum som beskrivs av kartesiska koordinater (dvs. den kan inte kombineras med andra transformationer samtidigt som kommutativitet och andra egenskaper bevaras), blir den i en 3- D eller 4-D projektivt utrymme beskrivet av homogena koordinater, en enkel linjär transformation (en skjuvning ).
Fler affina transformationer kan erhållas genom sammansättning av två eller flera affina transformationer. Till exempel, givet en translation T' med vektor en rotation R med en vinkel θ moturs , en skalning S med faktorer och en translation T av vektor resultatet M av T'RST är:
När man använder affina transformationer kommer den homogena komponenten i en koordinatvektor (normalt kallad w ) aldrig att förändras. Man kan därför lugnt anta att det alltid är 1 och ignorera det. Detta är dock inte sant när man använder perspektivprojektioner.
Perspektivprojektion
En annan typ av transformation, av betydelse i 3D-datorgrafik , är perspektivprojektionen . Medan parallella projektioner används för att projicera punkter på bildplanet längs parallella linjer, projicerar perspektivprojektionen punkter på bildplanet längs linjer som utgår från en enda punkt, som kallas projektionscentrum. Det betyder att ett föremål har en mindre projektion när det är långt bort från projektionscentrum och en större projektion när det är närmare (se även reciprok funktion ).
Den enklaste perspektivprojektionen använder origo som projektionscentrum, och planet vid som bildplan. Den funktionella formen för denna transformation är då ; . Vi kan uttrycka detta i homogena koordinater som:
Efter att ha utfört matrismultiplikationen kommer den homogena komponenten att vara lika med värdet av och de andra tre kommer inte att ändras. För att mappa tillbaka till det verkliga planet måste vi därför utföra den homogena divideringen eller perspektivdelningen genom att dividera varje komponent med :
Mer komplicerade perspektivprojektioner kan komponeras genom att kombinera denna med rotationer, skalor, translationer och saxar för att flytta bildplanet och projektionscentrum vart de än önskas.
Se även
- 3D-projektion
- Ändring av grund
- Bildkorrigering
- Pose (datorseende)
- Stel transformation
- Transformation (funktion)
- Transformationsgeometri
externa länkar
- Matrissidan Praktiska exempel i POV-Ray
- Referenssida - Rotation av axlar
- Linjär transformationsräknare
- Transformationsapplet - Generera matriser från 2D-transformationer och vice versa.
- Koordinattransformation under rotation i 2D
- Excel Fun - Bygg 3D-grafik från ett kalkylblad