Gå til indholdet

Tutorial 3: Rotationer i 3D

I 3D, ligesom i 2D, kan vi bruge matricer til at udføre rotationer af punkter i rummet. I 3D har vi dog flere muligheder, da vi kan rotere omkring x-, y- og z-akserne.

Rotation omkring X-aksen

En rotation om x-aksen med en vinkel \(\theta\) er givet ved transformationsmatricen:

\[ R_x(\theta) = \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos(\theta) & \sin(\theta) \\ 0 & -\sin(\theta) & \cos(\theta) \end{bmatrix} \]

Rotation omkring Y-aksen

En rotation om y-aksen med en vinkel \(\theta\) er givet ved transformationsmatricen (for rækkevektorer):

\[ R_y(\theta) = \begin{bmatrix} \cos(\theta) & 0 & -\sin(\theta) \\ 0 & 1 & 0 \\ \sin(\theta) & 0 & \cos(\theta) \end{bmatrix} \]

Rotation omkring Z-aksen

En rotation om z-aksen med en vinkel \(\theta\) er givet ved transformationsmatricen:

\[ R_z(\theta) = \begin{bmatrix} \cos(\theta) & \sin(\theta) & 0 \\ -\sin(\theta) & \cos(\theta) & 0 \\ 0 & 0 & 1 \end{bmatrix} \]

Egenskaber ved 3D Rotationsmatricer

Ligesom i 2D har 3D rotationsmatricer nogle vigtige egenskaber:

  • Invers = Transponeret: Inversen af en 3D rotationsmatrix er lig med dens transponerede. Dette gør det let at "afrotere" et punkt.
  • Determinant = 1: Determinanten af en 3D rotationsmatrix er altid 1.
  • Rotation x Rotation = Rotation: Produktet af to rotationsmatricer er en anden rotationsmatrix. Dette betyder, at flere rotationer kombineret stadig resulterer i en rotation.

Kombination af Rotationer

Rotationer i 3D kan kombineres ved at multiplicere deres respektive matricer. Rækkefølgen af multiplikationen er vigtig, da matrixmultiplikation ikke er kommutativ. For eksempel, hvis du først roterer omkring x-aksen og derefter omkring y-aksen, er den samlede transformationsmatrix:

\[ R_{total} = R_y(\theta_2) \cdot R_x(\theta_1) \]

Rotation omkring en Vilkårlig Akse

Se tutorial 4.

Legerum

Prøv nedenstående applet for at rotere kassen. Hvis det ikke vises korrekt, kan du prøve gå direkte the applet'en. Ellers gå videre til opsamlingen og alle "formlerne" i den sidste tutorial.