linear-1.20.8: Linear Algebra

Linear.Projection

Description

Common projection matrices: e.g. perspective/orthographic transformation matrices.

Analytically derived inverses are also supplied, because they can be much more accurate in practice than computing them through general purpose means

Synopsis

# Documentation

Arguments

 :: (Epsilon a, Floating a) => V3 a Eye -> V3 a Center -> V3 a Up -> M44 a

Build a look at view matrix

Arguments

 :: Floating a => a FOV (y direction, in radians) -> a Aspect ratio -> a Near plane -> a Far plane -> M44 a

Build a matrix for a symmetric perspective-view frustum

Arguments

 :: Floating a => a FOV (y direction, in radians) -> a Aspect ratio -> a Near plane -> a Far plane -> M44 a

Build an inverse perspective matrix

Arguments

 :: Floating a => a FOV (y direction, in radians) -> a Aspect Ratio -> a Near plane -> M44 a

Build a matrix for a symmetric perspective-view frustum with a far plane at infinite

Arguments

 :: Floating a => a FOV (y direction, in radians) -> a Aspect Ratio -> a Near plane -> M44 a

Arguments

 :: Floating a => a Left -> a Right -> a Bottom -> a Top -> a Near -> a Far -> M44 a

Build a perspective matrix per the classic glFrustum arguments.

Arguments

 :: Floating a => a Left -> a Right -> a Bottom -> a Top -> a Near -> a Far -> M44 a

Arguments

 :: Fractional a => a Left -> a Right -> a Bottom -> a Top -> a Near -> a Far -> M44 a

Build an orthographic perspective matrix from 6 clipping planes. This matrix takes the region delimited by these planes and maps it to normalized device coordinates between [-1,1]

This call is designed to mimic the parameters to the OpenGL glOrtho call, so it has a slightly strange convention: Notably: the near and far planes are negated.

Consequently:

ortho l r b t n f !* V4 l b (-n) 1 = V4 (-1) (-1) (-1) 1
ortho l r b t n f !* V4 r t (-f) 1 = V4 1 1 1 1


Examples:

>>> ortho 1 2 3 4 5 6 !* V4 1 3 (-5) 1
V4 (-1.0) (-1.0) (-1.0) 1.0

>>> ortho 1 2 3 4 5 6 !* V4 2 4 (-6) 1
V4 1.0 1.0 1.0 1.0


Arguments

 :: Fractional a => a Left -> a Right -> a Bottom -> a Top -> a Near -> a Far -> M44 a

Build an inverse orthographic perspective matrix from 6 clipping planes