Skip to content
Part IA Michaelmas Term

Normal Vector Transformation

The Problem

Normal vectors transform differently from positions!

For transformation matrix M\mathbf{M} applied to positions, normals transform using: N′=(M−1)⊤N\mathbf{N}' = (\mathbf{M}^{-1})^\top \mathbf{N}

Derivation

The normal N\mathbf{N} is perpendicular to the tangent vector T\mathbf{T}: N⋅T=0\mathbf{N} \cdot \mathbf{T} = 0

After transformation, T′=MT\mathbf{T}' = \mathbf{M}\mathbf{T}. We need N′⋅T′=0\mathbf{N}' \cdot \mathbf{T}' = 0: N′⋅(MT)=((M−1)⊤N)⋅(MT)=N⊤M−1MT=N⋅T=0\mathbf{N}' \cdot (\mathbf{M}\mathbf{T}) = ((\mathbf{M}^{-1})^\top \mathbf{N}) \cdot (\mathbf{M}\mathbf{T}) = \mathbf{N}^\top \mathbf{M}^{-1} \mathbf{M}\mathbf{T} = \mathbf{N} \cdot \mathbf{T} = 0

Simplifications

Pure Rotation

If M\mathbf{M} is orthogonal (rotation only): M−1=M⊤\mathbf{M}^{-1} = \mathbf{M}^\top

Therefore: N′=MN\mathbf{N}' = \mathbf{M}\mathbf{N}

Normals use the same rotation matrix as positions.

Uniform Scale + Rotation

The scale factor cancels (normals are renormalised anyway): N′=RN\mathbf{N}' = \mathbf{R}\mathbf{N}

Non-Uniform Scale or Shear

Must compute and apply (M−1)⊤(\mathbf{M}^{-1})^\top: N′=(M−1)⊤N\mathbf{N}' = (\mathbf{M}^{-1})^\top \mathbf{N}

Translation

Normals are unchanged by pure translations (direction vectors).

Why It Matters

Non-uniform scaling distorts normals:

  • A sphere scaled to an ellipsoid needs transformed normals
  • Using M\mathbf{M} directly would make normals point in wrong direction

Normal transformation showing correct vs incorrect transformation after non-uniform scaling

Summary

  • Normals transform with (M−1)⊤(\mathbf{M}^{-1})^\top, not M\mathbf{M}
  • Pure rotation: normals use same matrix as positions
  • Uniform scale: scale cancels after renormalisation
  • Non-uniform scale/shear: must compute inverse transpose
  • Translation: no effect on direction vectors

Past Paper Questions

2025 Paper 3 Question 4(a)(ii): How would you obtain the transformation for the normal using scaling, rotation, and translation? Simplify if possible. [2 marks]