Matricer II
Forberedelse¶
3DM: Kapitel 6
I skal have set videoerne fra den aktuelle session. Dette udgør som minimum jeres forberedelse til hver session. Hertil kan I også læse i bogen.
Materiale¶
Øvelsesnoter - tilgængelige mandag
Kort om sessionen¶
I denne session introduceres begrebet ortogonalitet i matricer samt determinanter og deres anvendelse. Vi undersøger, hvordan man tester, om en matrix er ortogonal (igen), ved brug af Gram-matricen. Derudover lærer vi, hvordan determinanter kan bruges til at bestemme invertibilitet og transformationsegenskaber.
Nøgleord¶
- Determinant
- Ortogonalitet og Ortonormalitet
- Invertibilitet
- Translationer
- Homogene koordinater
- Perspektivprojektion
Videomateriale¶
Vi fortsætter med 3Blue1Browns serie om lineær algebra og supplerer med andre. Videoerne giver en indføring i koncepterne, hvor mine tutorials mere handler om hvordan man laver de relevante beregninger både manuelt og i Python. Se videoerne før du går til tutorials
5.1. 3Blue1Brown: Determinanten¶
5.2. 3Blue1Brown: Invertible matricer¶
5.3. Maxwell Hunt: Homogene koordinater og translationer¶
Bemærk: De første 4:20 minutter er repetition af sidste uges emne. Herefter går han videre med translationer. Vær opmærksom på, at han (og de fleste andre) bruger en anden konvention for homogene koordinater end den, bogen bruger. Bogen bruger rækkevektorer (fra venstre), hvor han bruger søjlevektorer fra højre. Bogen placerer translationen i den sidste række, hvor den mest almindelige konvention er at placere den i den sidste søjle (som i videoen). Det er træls og lidt forvirrende. Men pointen med videoen er at fange essensen af translationer og homogene koordinater. Se den relevante tutorial for at se, hvordan man beregner det på begge måder.
5.4. Brendan Galea: Perspektivprojektion¶
Bemærk: Jeg har valgt at starte videoen ved 5:17, da det er her han begynder at snakke om perspektivprojektion. I er velkomne til at se den fra start, da det faktisk er ret spændende. Her taler han generelt om hvordan vi får 3D til at se 3D ud på en 2D skærm.
5.5. Miolith: Homogene koordinater og perspektivprojektion (Valgfrit):¶
Hvis du ikke har så meget tid, kan denne video (til nøds) erstatte de to ovenstående. Den er lidt kortere.
Tutorials¶
-
I denne tutorial gennemgås hvordan man beregner determinanter og inverser for 2x2 og 3x3 matricer. Derudover gennemgås regneregler for determinanter og inverser.
-
Her gennemgås ortogonalitet og ortonormalitet. Vi har set på dette da vi snakkede om vektorer.
-
Her gennemgås hvordan man laver translationer i 2D og 3D. Dette er en vigtig transformation, som I skal kunne. Vi genbesøger også de andre transformationer, som vi har set på tidligere.
-
Perspektivisk projektion er en teknik inden for 3D-grafik, der bruges til at skabe en illusion af dybde på en 2D-skærm. Denne tutorial forklarer, hvordan 4x4 matricer bruges til at implementere perspektivisk projektion, og dækker de underliggende principper og den nødvendige matematik.
Øvelser¶
[Der er Python løsninger i sessionsmaterialet]
Øvelse 1
I denne øvelse vil jeg gerne have at I først prøver at regne det i hånden, så I får fornemmelsen af, hvordan det hænger sammen. Derefter kan I tjekke jeres svar i Python. Find determinanten af følgende matricer:
- \(\left[\begin{array}{cc}3 & -2 \\ 1 & 4\end{array}\right]\)
- \(\left[\begin{array}{ccc}3 & -2 & 0 \\ 1 & 4 & 0 \\ 0 & 0 & 2\end{array}\right]\)
Se svaret
- \(\left|\begin{array}{cc}3 & -2 \\ 1 & 4\end{array}\right|=3-4-(-2)-1=14\)
- \(\left|\begin{array}{ccc}3 & -2 & 0 \\ 1 & 4 & 0 \\ 0 & 0 & 2\end{array}\right|=3(4 \cdot 2-0 \cdot 0)+(-2)(0 \cdot 0-1 \cdot 2)+0(1 \cdot 0-4 \cdot 0)=28\).
Øvelse 2
Is the following matrix orthogonal? [Brug Python. Se Tutorial 2]
Use a tolerance of \(10^{-4}\) and then \(10^{-3}\).
Se svaret
The matrix is orthogonal within the appropriate tolerance (\(10^{-3}\)).
Exercise 3
Construct a \(4 \times 4\) matrix to translate by \([4,2,3]\). Remember that the book uses row vectors, so the translation should be in the last row.
Se svaret
\(\left[\begin{array}{llll}1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 4 & 2 & 3 & 1\end{array}\right]\)
Øvelse 4
Construct a \(4 \times 4\) matrix to rotate \(20^{\circ}\) about the \(x\)-axis and then translate by \([4,2,3]\).
Se svaret
\(\begin{aligned} \mathbf{R}_x\left(20^{\circ}\right) \mathbf{T}([4,2,3]) & =\left[\begin{array}{cccc}1.000 & 0.000 & 0.000 & 0.000 \\ 0.000 & 0.940 & 0.342 & 0.000 \\ 0.000 & -0.342 & 0.940 & 0.000 \\ 0.000 & 0.000 & 0.000 & 1.000\end{array}\right]\left[\begin{array}{llll}1.000 & 0.000 & 0.000 & 0.000 \\ 0.000 & 1.000 & 0.000 & 0.000 \\ 0.000 & 0.000 & 1.000 & 0.000 \\ 4.000 & 2.000 & 3.000 & 1.000\end{array}\right] \\ & =\left[\begin{array}{cccc}1.000 & 0.000 & 0.000 & 0.000 \\ 0.000 & 0.940 & 0.342 & 0.000 \\ 0.000 & -0.342 & 0.940 & 0.000 \\ 4.000 & 2.000 & 3.000 & 1.000\end{array}\right]\end{aligned}\)
Øvelse 5
Construct a \(4 \times 4\) matrix to translate by \([4,2,3]\) and then rotate \(20^{\circ}\) about the \(x\)-axis.
Se svaret
\(\begin{aligned} \mathbf{T}([4,2,3]) \mathbf{R}_x\left(20^{\circ}\right) & =\left[\begin{array}{cccc}1.000 & 0.000 & 0.000 & 0.000 \\ 0.000 & 1.000 & 0.000 & 0.000 \\ 0.000 & 0.000 & 1.000 & 0.000 \\ 4.000 & 2.000 & 3.000 & 1.000\end{array}\right]\left[\begin{array}{cccc}1.000 & 0.000 & 0.000 & 0.000 \\ 0.000 & 0.940 & 0.342 & 0.000 \\ 0.000 & -0.342 & 0.940 & 0.000 \\ 0.000 & 0.000 & 0.000 & 1.000\end{array}\right] \\ & =\left[\begin{array}{cccc}1.000 & 0.000 & 0.000 & 0.000 \\ 0.000 & 0.940 & 0.342 & 0.000 \\ 0.000 & -0.342 & 0.940 & 0.000 \\ 4.000 & 0.853 & 3.503 & 1.000\end{array}\right]\end{aligned}\)
Øvelse 6
Construct a \(4 \times 4\) matrix to perform a perspective projection onto the plane \(x=5\). (Assume the origin is the center of projection.)
Se svaret
\(\left[\begin{array}{cccc}1 & 0 & 0 & 1 / 5 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 0\end{array}\right]\)
Øvelse 7 Use the matrix from the previous exercise to compute the 3D coordinates of the projection of the point \((105,-243,89)\) onto the plane \(x=5\). [Prøv at gøre det manuelt først, uden Python, og så gå til implementeringen bagefter]
Se svaret
\(\left[\begin{array}{llll}105 & -243 & 89 & 1\end{array}\right]\left[\begin{array}{cccc}1 & 0 & 0 & 1 / 5 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 0\end{array}\right]=\left[\begin{array}{llll}105 & -243 & 89 & \frac{105}{5}\end{array}\right] \Rightarrow\left[\begin{array}{lll}5 & \frac{-81}{7} & \frac{89}{21}\end{array}\right]\)
Uddybende noter¶
Jeg dropper de uddybende noter, da tutorials spiller den rolle. Der ville langt hen ad vejen være overlap.