Home

Geometry

Distributed under the terms of the CC BY-NC-ND 4.0 License.

  1. Points, Vectors and Normals
  2. Coordinate Systems
  3. Math Operations on Points and Vectors
  4. Matrices
  5. How Does Matrix Work: Part 1
  6. How Does Matrix Work: Part 2
  7. Transforming Points and Vectors
  8. Row Major vs Column Major Vector
  9. Matrix Operations
  10. Spherical Coordinates and Trigonometric Functions
  11. Creating an Orientation Matrix or Local Coordinate System
  12. Transforming Normals
  13. Source Code (external link GitHub)

Matrix Operations

Reading time: 2 mins.

Transpose

The transpose of a matrix, denoted as \(M^T\), is derived by flipping the matrix \(M\) over its main diagonal (that runs from top left to bottom right), effectively transforming the rows of \(M\) into columns of \(M^T\), and vice versa. The operation of transposing can be implemented in code as follows:

Matrix44 transpose() const {
    Matrix44 transpMat;
    for (uint8_t i = 0; i < 4; ++i) {
        for (uint8_t j = 0; j < 4; ++j) {
            transpMat[i][j] = m[j][i];
        }
    }
    return transpMat;
}

This code snippet showcases the technique of row and column swapping, necessitating the use of a new matrix to hold the transposed values since the operation isn't in-place. Transposing is particularly useful for converting between row-major and column-major matrix conventions as used in different 3D applications.

Inverse

The concept of matrix inversion plays a pivotal role in linear algebra, especially in 3D graphics. If a point A is transformed to point B by multiplying with matrix \(M\), then multiplying B by \(M^{-1}\) (the inverse of \(M\)) reverts B back to A. Mathematically, this relationship is expressed as \(MM^{-1} = I\), where \(I\) is the identity matrix. The operation of matrix multiplication by its inverse results in the identity matrix.

In the section How Does a Matrix Work, the orthogonal matrix is discussed, noting that its inverse is readily obtainable through transposition. An orthogonal matrix is defined by its orthogonal unit vector rows and columns. This property is crucial for processes like transforming normals in 3D graphics.

Matrix inversion is crucial for operations such as transforming points or vectors between coordinate systems. For instance, in 3D rendering, it's common to transform ray directions and origins into object space for intersection tests. If an intersection occurs, converting the intersection point back to world space requires the inverse of the transformation matrix.

The lesson Matrix Inverse (currently available in the old version of Scratchapixel) elaborates on calculating a matrix's inverse. Understanding and applying matrix inversion is indispensable for building even a basic renderer, and practical code examples will be provided to facilitate this.

Determinant of a Matrix

The explanation regarding the determinant of a matrix and its significance in 3D graphics and matrix operations will be added in a future update.

previousnext