linear-1.14: Linear Algebra

Linear.V4

Description

4-D Vectors

Synopsis

# Documentation

data V4 a Source

A 4-dimensional vector.

Constructors

 V4 !a !a !a !a

Instances

 Monad V4 Functor V4 MonadFix V4 Applicative V4 Foldable V4 Traversable V4 Generic1 V4 Distributive V4 Representable V4 MonadZip V4 Traversable1 V4 Foldable1 V4 Apply V4 Bind V4 Additive V4 Metric V4 R1 V4 R2 V4 R3 V4 R4 V4 Trace V4 Affine V4 Unbox a => Vector Vector (V4 a) Unbox a => MVector MVector (V4 a) Num r => Coalgebra r (E V4) Bounded a => Bounded (V4 a) Eq a => Eq (V4 a) Fractional a => Fractional (V4 a) Data a => Data (V4 a) Num a => Num (V4 a) Ord a => Ord (V4 a) Read a => Read (V4 a) Show a => Show (V4 a) Ix a => Ix (V4 a) Generic (V4 a) Storable a => Storable (V4 a) Hashable a => Hashable (V4 a) Unbox a => Unbox (V4 a) Ixed (V4 a) Epsilon a => Epsilon (V4 a) FunctorWithIndex (E V4) V4 FoldableWithIndex (E V4) V4 TraversableWithIndex (E V4) V4 Each (V4 a) (V4 b) a b Typeable (* -> *) V4 type Rep1 V4 type Rep V4 = E V4 type Diff V4 = V4 data MVector s (V4 a) = MV_V4 !Int (MVector s a) type Rep (V4 a) data Vector (V4 a) = V_V4 !Int (Vector a) type Index (V4 a) = E V4 type IxValue (V4 a) = a

vector :: Num a => V3 a -> V4 a Source

Convert a 3-dimensional affine vector into a 4-dimensional homogeneous vector.

point :: Num a => V3 a -> V4 a Source

Convert a 3-dimensional affine point into a 4-dimensional homogeneous vector.

normalizePoint :: Fractional a => V4 a -> V3 a Source

Convert 4-dimensional projective coordinates to a 3-dimensional point. This operation may be denoted, ```euclidean [x:y:z:w] = (x/w, y/w, z/w)``` where the projective, homogenous, coordinate `[x:y:z:w]` is one of many associated with a single point ```(x/w, y/w, z/w)```.

class R1 t where Source

A space that has at least 1 basis vector `_x`.

Minimal complete definition

Nothing

Methods

_x :: Lens' (t a) a Source

````>>> ````V1 2 ^._x
```2
```
````>>> ````V1 2 & _x .~ 3
```V1 3
```

Instances

 R1 Identity R1 V1 R1 V2 R1 V3 R1 V4 R1 f => R1 (Point f)

class R1 t => R2 t where Source

A space that distinguishes 2 orthogonal basis vectors `_x` and `_y`, but may have more.

Minimal complete definition

Nothing

Methods

_y :: Lens' (t a) a Source

````>>> ````V2 1 2 ^._y
```2
```
````>>> ````V2 1 2 & _y .~ 3
```V2 1 3
```

_xy :: Lens' (t a) (V2 a) Source

Instances

 R2 V2 R2 V3 R2 V4 R2 f => R2 (Point f)

_yx :: R2 t => Lens' (t a) (V2 a) Source

````>>> ````V2 1 2 ^. _yx
```V2 2 1
```

class R2 t => R3 t where Source

A space that distinguishes 3 orthogonal basis vectors: `_x`, `_y`, and `_z`. (It may have more)

Minimal complete definition

Nothing

Methods

_z :: Lens' (t a) a Source

````>>> ````V3 1 2 3 ^. _z
```3
```

_xyz :: Lens' (t a) (V3 a) Source

Instances

 R3 V3 R3 V4 R3 f => R3 (Point f)

_xz :: R3 t => Lens' (t a) (V2 a) Source

_yz :: R3 t => Lens' (t a) (V2 a) Source

_zx :: R3 t => Lens' (t a) (V2 a) Source

_zy :: R3 t => Lens' (t a) (V2 a) Source

_xzy :: R3 t => Lens' (t a) (V3 a) Source

_yxz :: R3 t => Lens' (t a) (V3 a) Source

_yzx :: R3 t => Lens' (t a) (V3 a) Source

_zxy :: R3 t => Lens' (t a) (V3 a) Source

_zyx :: R3 t => Lens' (t a) (V3 a) Source

class R3 t => R4 t where Source

A space that distinguishes orthogonal basis vectors `_x`, `_y`, `_z`, `_w`. (It may have more.)

Minimal complete definition

Nothing

Methods

_w :: Lens' (t a) a Source

````>>> ````V4 1 2 3 4 ^._w
```4
```

_xyzw :: Lens' (t a) (V4 a) Source

Instances

 R4 V4 R4 f => R4 (Point f)

_xw :: R4 t => Lens' (t a) (V2 a) Source

_yw :: R4 t => Lens' (t a) (V2 a) Source

_zw :: R4 t => Lens' (t a) (V2 a) Source

_wx :: R4 t => Lens' (t a) (V2 a) Source

_wy :: R4 t => Lens' (t a) (V2 a) Source

_wz :: R4 t => Lens' (t a) (V2 a) Source

_xyw :: R4 t => Lens' (t a) (V3 a) Source

_xzw :: R4 t => Lens' (t a) (V3 a) Source

_xwy :: R4 t => Lens' (t a) (V3 a) Source

_xwz :: R4 t => Lens' (t a) (V3 a) Source

_yxw :: R4 t => Lens' (t a) (V3 a) Source

_yzw :: R4 t => Lens' (t a) (V3 a) Source

_ywx :: R4 t => Lens' (t a) (V3 a) Source

_ywz :: R4 t => Lens' (t a) (V3 a) Source

_zxw :: R4 t => Lens' (t a) (V3 a) Source

_zyw :: R4 t => Lens' (t a) (V3 a) Source

_zwx :: R4 t => Lens' (t a) (V3 a) Source

_zwy :: R4 t => Lens' (t a) (V3 a) Source

_wxy :: R4 t => Lens' (t a) (V3 a) Source

_wxz :: R4 t => Lens' (t a) (V3 a) Source

_wyx :: R4 t => Lens' (t a) (V3 a) Source

_wyz :: R4 t => Lens' (t a) (V3 a) Source

_wzx :: R4 t => Lens' (t a) (V3 a) Source

_wzy :: R4 t => Lens' (t a) (V3 a) Source

_xywz :: R4 t => Lens' (t a) (V4 a) Source

_xzyw :: R4 t => Lens' (t a) (V4 a) Source

_xzwy :: R4 t => Lens' (t a) (V4 a) Source

_xwyz :: R4 t => Lens' (t a) (V4 a) Source

_xwzy :: R4 t => Lens' (t a) (V4 a) Source

_yxzw :: R4 t => Lens' (t a) (V4 a) Source

_yxwz :: R4 t => Lens' (t a) (V4 a) Source

_yzxw :: R4 t => Lens' (t a) (V4 a) Source

_yzwx :: R4 t => Lens' (t a) (V4 a) Source

_ywxz :: R4 t => Lens' (t a) (V4 a) Source

_ywzx :: R4 t => Lens' (t a) (V4 a) Source

_zxyw :: R4 t => Lens' (t a) (V4 a) Source

_zxwy :: R4 t => Lens' (t a) (V4 a) Source

_zyxw :: R4 t => Lens' (t a) (V4 a) Source

_zywx :: R4 t => Lens' (t a) (V4 a) Source

_zwxy :: R4 t => Lens' (t a) (V4 a) Source

_zwyx :: R4 t => Lens' (t a) (V4 a) Source

_wxyz :: R4 t => Lens' (t a) (V4 a) Source

_wxzy :: R4 t => Lens' (t a) (V4 a) Source

_wyxz :: R4 t => Lens' (t a) (V4 a) Source

_wyzx :: R4 t => Lens' (t a) (V4 a) Source

_wzxy :: R4 t => Lens' (t a) (V4 a) Source

_wzyx :: R4 t => Lens' (t a) (V4 a) Source

ex :: R1 t => E t Source

ey :: R2 t => E t Source

ez :: R3 t => E t Source

ew :: R4 t => E t Source