Skip to main content

Derive oblique projection matrix

Short answer

Oblique projection: projectors incline at angle α to the view plane. For view plane z=0, xp = x + z·L1·cosφ, yp = y + z·L1·sinφ with L1 = cotα. The transformation matrix has rows [1 0 L1cosφ 0; 0 1 L1sinφ 0; 0 0 0 0; 0 0 0 1]. Cavalier uses L1=1, cabinet L1=0.5.

Derive the oblique projection matrix with necessary assumptions.

An oblique projection is a parallel projection in which the projectors are not perpendicular to the view plane.

Assumptions:

  • The view plane is the xy plane (z = 0).
  • A point P(x, y, z) projects to P'(xp, yp) on the view plane.
  • The point (x, y, 0) lies on the view plane directly below P (its orthographic projection).
  • The projector makes angle α with the view plane. The line joining (x, y) to (xp, yp) on the view plane has length L and makes angle φ with the x-axis.
   z
   |   P(x,y,z)
   |  /|
   | / |
   |/α |         projector P -> P'
   +---+----> view plane
  (x,y,0) P'(xp,yp)

Derivation: P, (x, y, 0) and P' form a right triangle with height z and base L, so tanα = z/L, which gives L = z/tanα = z·L1, where L1 = 1/tanα is the value of L for a unit length of z. Taking the components of L along x and y:

  • xp = x + z·L1·cosφ
  • yp = y + z·L1·sinφ
  • zp = 0

Matrix:

| xp |   | 1 0 L1cosφ 0 | | x |
| yp | = | 0 1 L1sinφ 0 | | y |
| zp |   | 0 0 0      0 | | z |
| 1  |   | 0 0 0      1 | | 1 |

If α = 90° then L1 = 0, and the matrix becomes the orthographic projection.

Common types

TypeαL1Effect
Cavalier45°1Receding lines keep full length
Cabinet63.4° (tanα = 2)1/2Receding lines are half length, so it looks more natural

Typical choices of φ are 30° or 45°.

✓ Answer checked by Claude Opus 5.5 (high effort)

All Computer Graphics chapter 4 questions →