linear-1.19.1.3: 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