linear-1.16.2: Linear Algebra

Copyright(C) 2012-2013 Edward Kmett,
LicenseBSD-style (see the file LICENSE)
MaintainerEdward Kmett <ekmett@gmail.com>
Stabilityexperimental
Portabilitynon-portable
Safe HaskellTrustworthy
LanguageHaskell98

Linear.V2

Description

2-D Vectors

Synopsis

Documentation

data V2 a Source

A 2-dimensional vector

>>> pure 1 :: V2 Int
V2 1 1
>>> V2 1 2 + V2 3 4
V2 4 6
>>> V2 1 2 * V2 3 4
V2 3 8
>>> sum (V2 1 2)
3

Constructors

V2 !a !a 

Instances

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

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

ex :: R1 t => E t Source

ey :: R2 t => E t Source

perp :: Num a => V2 a -> V2 a Source

the counter-clockwise perpendicular vector

>>> perp $ V2 10 20
V2 (-20) 10

angle :: Floating a => a -> V2 a Source