linear-1.20.7: Linear Algebra

Linear.V4

Description

4-D Vectors

Synopsis

# Documentation

data V4 a #

A 4-dimensional vector.

Constructors

 V4 !a !a !a !a

Instances

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

Convert a 3-dimensional affine vector into a 4-dimensional homogeneous vector, i.e. sets the w coordinate to 0.

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

Convert a 3-dimensional affine point into a 4-dimensional homogeneous vector, i.e. sets the w coordinate to 1.

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

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 #

A space that has at least 1 basis vector _x.

Methods

_x :: Lens' (t a) a #

>>> V1 2 ^._x
2

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


Instances

 # Methods_x :: Functor f => (a -> f a) -> Identity a -> f (Identity a) # # Methods_x :: Functor f => (a -> f a) -> V1 a -> f (V1 a) # # Methods_x :: Functor f => (a -> f a) -> V2 a -> f (V2 a) # # Methods_x :: Functor f => (a -> f a) -> V3 a -> f (V3 a) # # Methods_x :: Functor f => (a -> f a) -> V4 a -> f (V4 a) # R1 f => R1 (Point f) # Methods_x :: Functor f => (a -> f a) -> Point f a -> f (Point f a) #

class R1 t => R2 t where #

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

Methods

_y :: Lens' (t a) a #

>>> V2 1 2 ^._y
2

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


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

Instances

 # Methods_y :: Functor f => (a -> f a) -> V2 a -> f (V2 a) #_xy :: Functor f => (V2 a -> f (V2 a)) -> V2 a -> f (V2 a) # # Methods_y :: Functor f => (a -> f a) -> V3 a -> f (V3 a) #_xy :: Functor f => (V2 a -> f (V2 a)) -> V3 a -> f (V3 a) # # Methods_y :: Functor f => (a -> f a) -> V4 a -> f (V4 a) #_xy :: Functor f => (V2 a -> f (V2 a)) -> V4 a -> f (V4 a) # R2 f => R2 (Point f) # Methods_y :: Functor f => (a -> f a) -> Point f a -> f (Point f a) #_xy :: Functor f => (V2 a -> f (V2 a)) -> Point f a -> f (Point f a) #

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

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


class R2 t => R3 t where #

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

Methods

_z :: Lens' (t a) a #

>>> V3 1 2 3 ^. _z
3


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

Instances

 # Methods_z :: Functor f => (a -> f a) -> V3 a -> f (V3 a) #_xyz :: Functor f => (V3 a -> f (V3 a)) -> V3 a -> f (V3 a) # # Methods_z :: Functor f => (a -> f a) -> V4 a -> f (V4 a) #_xyz :: Functor f => (V3 a -> f (V3 a)) -> V4 a -> f (V4 a) # R3 f => R3 (Point f) # Methods_z :: Functor f => (a -> f a) -> Point f a -> f (Point f a) #_xyz :: Functor f => (V3 a -> f (V3 a)) -> Point f a -> f (Point f a) #

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

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

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

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

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

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

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

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

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

class R3 t => R4 t where #

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

Methods

_w :: Lens' (t a) a #

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


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

Instances

 # Methods_w :: Functor f => (a -> f a) -> V4 a -> f (V4 a) #_xyzw :: Functor f => (V4 a -> f (V4 a)) -> V4 a -> f (V4 a) # R4 f => R4 (Point f) # Methods_w :: Functor f => (a -> f a) -> Point f a -> f (Point f a) #_xyzw :: Functor f => (V4 a -> f (V4 a)) -> Point f a -> f (Point f a) #

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ex :: R1 t => E t #

ey :: R2 t => E t #

ez :: R3 t => E t #

ew :: R4 t => E t #