Copyright | 2014 Edward Kmett Charles Durham 2015 Trevor L. McDonell |
---|---|
License | BSD-style (see the file LICENSE) |
Maintainer | Edward Kmett <ekmett@gmail.com> |
Stability | experimental |
Portability | non-portable |
Safe Haskell | None |
Language | Haskell98 |
2-D Vectors
Documentation
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
V2 ~a ~a |
class R1 t => R1 t where Source #
A space that has at least 1 basis vector _x
.
_yx :: forall t a. (R2 t, Elt a, Box t a) => Lens' (Exp (t a)) (Exp (V2 a)) Source #
>>>
lift (V2 1 2 :: V2 Int) ^. _yx
(2,1)
perp :: forall a. Num a => Exp (V2 a) -> Exp (V2 a) Source #
the counter-clockwise perpendicular vector
>>>
perp $ lift (V2 10 20 :: V2 Int)
(-20,10)
Orphan instances
Additive V2 Source # | |
Metric V2 Source # | |
R1 V2 Source # | |
cst a => IsProduct cst (V2 a) Source # | |
(Lift Exp a, Elt (Plain a)) => Lift Exp (V2 a) Source # | |
Elt a => Unlift Exp (V2 (Exp a)) Source # | |
Floating a => Floating (Exp (V2 a)) Source # | |
Floating a => Fractional (Exp (V2 a)) Source # | |
Num a => Num (Exp (V2 a)) Source # | |
Elt a => Elt (V2 a) Source # | |
(Elt a, Elt b) => Each (Exp (V2 a)) (Exp (V2 b)) (Exp a) (Exp b) Source # | |