Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- data C (n :: Nat) = C
- newtype Vector (d :: Nat) (r :: *) = Vector {
- _unV :: Vec d r
- unV :: Lens' (Vector d r) (Vec d r)
- element :: forall proxy i d r. (Arity d, Arity i, (i + 1) <= d) => proxy i -> Lens' (Vector d r) r
- element' :: forall d r. Arity d => Int -> Traversal' (Vector d r) r
- vectorFromList :: Arity d => [a] -> Maybe (Vector d a)
- vectorFromListUnsafe :: Arity d => [a] -> Vector d a
- destruct :: (Arity d, Arity (d + 1), 1 <= (d + 1)) => Vector (d + 1) r -> (r, Vector d r)
- cross :: Num r => Vector 3 r -> Vector 3 r -> Vector 3 r
- toV2 :: Vector 2 a -> V2 a
- toV3 :: Vector 3 a -> V3 a
- fromV3 :: V3 a -> Vector 3 a
- snoc :: (Arity (d + 1), Arity d) => Vector d r -> r -> Vector (d + 1) r
- init :: (Arity d, Arity (d + 1)) => Vector (d + 1) r -> Vector d r
- last :: forall d r. (Arity d, Arity (d + 1)) => Vector (d + 1) r -> r
- prefix :: forall i d r. (Arity d, Arity i, i <= d) => Vector d r -> Vector i r
- v2 :: r -> r -> Vector 2 r
- v3 :: r -> r -> r -> Vector 3 r
- _unV2 :: Vector 2 r -> (r, r)
- _unV3 :: Vector 3 r -> (r, r, r)
- pattern Vector2 :: r -> r -> Vector 2 r
- pattern Vector3 :: r -> r -> r -> Vector 3 r
- pattern Vector4 :: r -> r -> r -> r -> Vector 4 r
Documentation
A proxy which can be used for the coordinates.
d dimensional Vectors
newtype Vector (d :: Nat) (r :: *) Source #
Datatype representing d dimensional vectors. Our implementation wraps the implementation provided by fixed-vector.
Instances
Arity d => Functor (Vector d) Source # | |
Arity d => Applicative (Vector d) Source # | |
Arity d => Foldable (Vector d) Source # | |
Defined in Data.Geometry.Vector.VectorFixed fold :: Monoid m => Vector d m -> m # foldMap :: Monoid m => (a -> m) -> Vector d a -> m # foldr :: (a -> b -> b) -> b -> Vector d a -> b # foldr' :: (a -> b -> b) -> b -> Vector d a -> b # foldl :: (b -> a -> b) -> b -> Vector d a -> b # foldl' :: (b -> a -> b) -> b -> Vector d a -> b # foldr1 :: (a -> a -> a) -> Vector d a -> a # foldl1 :: (a -> a -> a) -> Vector d a -> a # elem :: Eq a => a -> Vector d a -> Bool # maximum :: Ord a => Vector d a -> a # minimum :: Ord a => Vector d a -> a # | |
Arity d => Traversable (Vector d) Source # | |
Defined in Data.Geometry.Vector.VectorFixed | |
Arity d => Affine (Vector d) Source # | |
Arity d => Additive (Vector d) Source # | |
Defined in Data.Geometry.Vector.VectorFixed (^+^) :: Num a => Vector d a -> Vector d a -> Vector d a # (^-^) :: Num a => Vector d a -> Vector d a -> Vector d a # lerp :: Num a => a -> Vector d a -> Vector d a -> Vector d a # liftU2 :: (a -> a -> a) -> Vector d a -> Vector d a -> Vector d a # liftI2 :: (a -> b -> c) -> Vector d a -> Vector d b -> Vector d c # | |
Arity d => Metric (Vector d) Source # | |
Defined in Data.Geometry.Vector.VectorFixed | |
Arity d => Vector (Vector d) r Source # | |
Defined in Data.Geometry.Vector.VectorFixed | |
(Eq r, Arity d) => Eq (Vector d r) Source # | |
(Ord r, Arity d) => Ord (Vector d r) Source # | |
Defined in Data.Geometry.Vector.VectorFixed | |
(Show r, Arity d) => Show (Vector d r) Source # | |
Generic (Vector d r) Source # | |
(Arity d, NFData r) => NFData (Vector d r) Source # | |
Defined in Data.Geometry.Vector.VectorFixed | |
(FromJSON r, Arity d, KnownNat d) => FromJSON (Vector d r) Source # | |
Defined in Data.Geometry.Vector.VectorFixed parseJSON :: Value -> Parser (Vector d r) parseJSONList :: Value -> Parser [Vector d r] | |
(ToJSON r, Arity d) => ToJSON (Vector d r) Source # | |
Defined in Data.Geometry.Vector.VectorFixed toEncoding :: Vector d r -> Encoding toJSONList :: [Vector d r] -> Value toEncodingList :: [Vector d r] -> Encoding | |
type Dim (Vector d) Source # | |
Defined in Data.Geometry.Vector.VectorFixed type Dim (Vector d) = d | |
type Diff (Vector d) Source # | |
Defined in Data.Geometry.Vector.VectorFixed | |
type Rep (Vector d r) Source # | |
Defined in Data.Geometry.Vector.VectorFixed |
element :: forall proxy i d r. (Arity d, Arity i, (i + 1) <= d) => proxy i -> Lens' (Vector d r) r Source #
Lens into the i th element
element' :: forall d r. Arity d => Int -> Traversal' (Vector d r) r Source #
Similar to element
above. Except that we don't have a static guarantee
that the index is in bounds. Hence, we can only return a Traversal
vectorFromList :: Arity d => [a] -> Maybe (Vector d a) Source #
vectorFromListUnsafe :: Arity d => [a] -> Vector d a Source #
destruct :: (Arity d, Arity (d + 1), 1 <= (d + 1)) => Vector (d + 1) r -> (r, Vector d r) Source #
Get the head and tail of a vector
cross :: Num r => Vector 3 r -> Vector 3 r -> Vector 3 r Source #
Cross product of two three-dimensional vectors
snoc :: (Arity (d + 1), Arity d) => Vector d r -> r -> Vector (d + 1) r Source #
Add an element at the back of the vector
init :: (Arity d, Arity (d + 1)) => Vector (d + 1) r -> Vector d r Source #
Get a vector of the first d - 1 elements.
prefix :: forall i d r. (Arity d, Arity i, i <= d) => Vector d r -> Vector i r Source #
Get a prefix of i elements of a vector