hgeometry-1.0.0.0: Geometric Algorithms, Data structures, and Data types.
Copyright(C) Frank Staals
Licensesee the LICENSE file
MaintainerFrank Staals
Safe HaskellSafe-Inferred
LanguageGHC2021

HGeometry.Vector

Description

D-dimensional Vectors

Synopsis

Documentation

data family Vector (d :: Nat) (r :: Type) Source #

Data type representing d-dimensional vectors storing elements of type r.

Instances

Instances details
FoldableWithIndex Int (Vector 1) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

ifoldMap :: Monoid m => (Int -> a -> m) -> Vector 1 a -> m Source #

ifoldMap' :: Monoid m => (Int -> a -> m) -> Vector 1 a -> m Source #

ifoldr :: (Int -> a -> b -> b) -> b -> Vector 1 a -> b Source #

ifoldl :: (Int -> b -> a -> b) -> b -> Vector 1 a -> b Source #

ifoldr' :: (Int -> a -> b -> b) -> b -> Vector 1 a -> b Source #

ifoldl' :: (Int -> b -> a -> b) -> b -> Vector 1 a -> b Source #

FoldableWithIndex Int (Vector 2) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

ifoldMap :: Monoid m => (Int -> a -> m) -> Vector 2 a -> m Source #

ifoldMap' :: Monoid m => (Int -> a -> m) -> Vector 2 a -> m Source #

ifoldr :: (Int -> a -> b -> b) -> b -> Vector 2 a -> b Source #

ifoldl :: (Int -> b -> a -> b) -> b -> Vector 2 a -> b Source #

ifoldr' :: (Int -> a -> b -> b) -> b -> Vector 2 a -> b Source #

ifoldl' :: (Int -> b -> a -> b) -> b -> Vector 2 a -> b Source #

FoldableWithIndex Int (Vector 3) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

ifoldMap :: Monoid m => (Int -> a -> m) -> Vector 3 a -> m Source #

ifoldMap' :: Monoid m => (Int -> a -> m) -> Vector 3 a -> m Source #

ifoldr :: (Int -> a -> b -> b) -> b -> Vector 3 a -> b Source #

ifoldl :: (Int -> b -> a -> b) -> b -> Vector 3 a -> b Source #

ifoldr' :: (Int -> a -> b -> b) -> b -> Vector 3 a -> b Source #

ifoldl' :: (Int -> b -> a -> b) -> b -> Vector 3 a -> b Source #

FoldableWithIndex Int (Vector 4) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

ifoldMap :: Monoid m => (Int -> a -> m) -> Vector 4 a -> m Source #

ifoldMap' :: Monoid m => (Int -> a -> m) -> Vector 4 a -> m Source #

ifoldr :: (Int -> a -> b -> b) -> b -> Vector 4 a -> b Source #

ifoldl :: (Int -> b -> a -> b) -> b -> Vector 4 a -> b Source #

ifoldr' :: (Int -> a -> b -> b) -> b -> Vector 4 a -> b Source #

ifoldl' :: (Int -> b -> a -> b) -> b -> Vector 4 a -> b Source #

FunctorWithIndex Int (Vector 1) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

imap :: (Int -> a -> b) -> Vector 1 a -> Vector 1 b Source #

FunctorWithIndex Int (Vector 2) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

imap :: (Int -> a -> b) -> Vector 2 a -> Vector 2 b Source #

FunctorWithIndex Int (Vector 3) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

imap :: (Int -> a -> b) -> Vector 3 a -> Vector 3 b Source #

FunctorWithIndex Int (Vector 4) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

imap :: (Int -> a -> b) -> Vector 4 a -> Vector 4 b Source #

TraversableWithIndex Int (Vector 1) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

itraverse :: Applicative f => (Int -> a -> f b) -> Vector 1 a -> f (Vector 1 b) Source #

TraversableWithIndex Int (Vector 2) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

itraverse :: Applicative f => (Int -> a -> f b) -> Vector 2 a -> f (Vector 2 b) Source #

TraversableWithIndex Int (Vector 3) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

itraverse :: Applicative f => (Int -> a -> f b) -> Vector 3 a -> f (Vector 3 b) Source #

TraversableWithIndex Int (Vector 4) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

itraverse :: Applicative f => (Int -> a -> f b) -> Vector 4 a -> f (Vector 4 b) Source #

(Vector Vector r, Vector_ (Vector d r) d r) => Vector Vector (Vector d r) Source # 
Instance details

Defined in HGeometry.Vector

(MVector MVector r, Vector_ (Vector d r) d r) => MVector MVector (Vector d r) Source # 
Instance details

Defined in HGeometry.Vector

Methods

basicLength :: MVector s (Vector d r) -> Int Source #

basicUnsafeSlice :: Int -> Int -> MVector s (Vector d r) -> MVector s (Vector d r) Source #

basicOverlaps :: MVector s (Vector d r) -> MVector s (Vector d r) -> Bool Source #

basicUnsafeNew :: Int -> ST s (MVector s (Vector d r)) Source #

basicInitialize :: MVector s (Vector d r) -> ST s () Source #

basicUnsafeReplicate :: Int -> Vector d r -> ST s (MVector s (Vector d r)) Source #

basicUnsafeRead :: MVector s (Vector d r) -> Int -> ST s (Vector d r) Source #

basicUnsafeWrite :: MVector s (Vector d r) -> Int -> Vector d r -> ST s () Source #

basicClear :: MVector s (Vector d r) -> ST s () Source #

basicSet :: MVector s (Vector d r) -> Vector d r -> ST s () Source #

basicUnsafeCopy :: MVector s (Vector d r) -> MVector s (Vector d r) -> ST s () Source #

basicUnsafeMove :: MVector s (Vector d r) -> MVector s (Vector d r) -> ST s () Source #

basicUnsafeGrow :: MVector s (Vector d r) -> Int -> ST s (MVector s (Vector d r)) Source #

Foldable (Vector 1) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

fold :: Monoid m => Vector 1 m -> m #

foldMap :: Monoid m => (a -> m) -> Vector 1 a -> m #

foldMap' :: Monoid m => (a -> m) -> Vector 1 a -> m #

foldr :: (a -> b -> b) -> b -> Vector 1 a -> b #

foldr' :: (a -> b -> b) -> b -> Vector 1 a -> b #

foldl :: (b -> a -> b) -> b -> Vector 1 a -> b #

foldl' :: (b -> a -> b) -> b -> Vector 1 a -> b #

foldr1 :: (a -> a -> a) -> Vector 1 a -> a #

foldl1 :: (a -> a -> a) -> Vector 1 a -> a #

toList :: Vector 1 a -> [a] #

null :: Vector 1 a -> Bool #

length :: Vector 1 a -> Int #

elem :: Eq a => a -> Vector 1 a -> Bool #

maximum :: Ord a => Vector 1 a -> a #

minimum :: Ord a => Vector 1 a -> a #

sum :: Num a => Vector 1 a -> a #

product :: Num a => Vector 1 a -> a #

Foldable (Vector 2) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

fold :: Monoid m => Vector 2 m -> m #

foldMap :: Monoid m => (a -> m) -> Vector 2 a -> m #

foldMap' :: Monoid m => (a -> m) -> Vector 2 a -> m #

foldr :: (a -> b -> b) -> b -> Vector 2 a -> b #

foldr' :: (a -> b -> b) -> b -> Vector 2 a -> b #

foldl :: (b -> a -> b) -> b -> Vector 2 a -> b #

foldl' :: (b -> a -> b) -> b -> Vector 2 a -> b #

foldr1 :: (a -> a -> a) -> Vector 2 a -> a #

foldl1 :: (a -> a -> a) -> Vector 2 a -> a #

toList :: Vector 2 a -> [a] #

null :: Vector 2 a -> Bool #

length :: Vector 2 a -> Int #

elem :: Eq a => a -> Vector 2 a -> Bool #

maximum :: Ord a => Vector 2 a -> a #

minimum :: Ord a => Vector 2 a -> a #

sum :: Num a => Vector 2 a -> a #

product :: Num a => Vector 2 a -> a #

Foldable (Vector 3) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

fold :: Monoid m => Vector 3 m -> m #

foldMap :: Monoid m => (a -> m) -> Vector 3 a -> m #

foldMap' :: Monoid m => (a -> m) -> Vector 3 a -> m #

foldr :: (a -> b -> b) -> b -> Vector 3 a -> b #

foldr' :: (a -> b -> b) -> b -> Vector 3 a -> b #

foldl :: (b -> a -> b) -> b -> Vector 3 a -> b #

foldl' :: (b -> a -> b) -> b -> Vector 3 a -> b #

foldr1 :: (a -> a -> a) -> Vector 3 a -> a #

foldl1 :: (a -> a -> a) -> Vector 3 a -> a #

toList :: Vector 3 a -> [a] #

null :: Vector 3 a -> Bool #

length :: Vector 3 a -> Int #

elem :: Eq a => a -> Vector 3 a -> Bool #

maximum :: Ord a => Vector 3 a -> a #

minimum :: Ord a => Vector 3 a -> a #

sum :: Num a => Vector 3 a -> a #

product :: Num a => Vector 3 a -> a #

Foldable (Vector 4) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

fold :: Monoid m => Vector 4 m -> m #

foldMap :: Monoid m => (a -> m) -> Vector 4 a -> m #

foldMap' :: Monoid m => (a -> m) -> Vector 4 a -> m #

foldr :: (a -> b -> b) -> b -> Vector 4 a -> b #

foldr' :: (a -> b -> b) -> b -> Vector 4 a -> b #

foldl :: (b -> a -> b) -> b -> Vector 4 a -> b #

foldl' :: (b -> a -> b) -> b -> Vector 4 a -> b #

foldr1 :: (a -> a -> a) -> Vector 4 a -> a #

foldl1 :: (a -> a -> a) -> Vector 4 a -> a #

toList :: Vector 4 a -> [a] #

null :: Vector 4 a -> Bool #

length :: Vector 4 a -> Int #

elem :: Eq a => a -> Vector 4 a -> Bool #

maximum :: Ord a => Vector 4 a -> a #

minimum :: Ord a => Vector 4 a -> a #

sum :: Num a => Vector 4 a -> a #

product :: Num a => Vector 4 a -> a #

Foldable1 (Vector 1) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

fold1 :: Semigroup m => Vector 1 m -> m #

foldMap1 :: Semigroup m => (a -> m) -> Vector 1 a -> m #

foldMap1' :: Semigroup m => (a -> m) -> Vector 1 a -> m #

toNonEmpty :: Vector 1 a -> NonEmpty a #

maximum :: Ord a => Vector 1 a -> a #

minimum :: Ord a => Vector 1 a -> a #

head :: Vector 1 a -> a #

last :: Vector 1 a -> a #

foldrMap1 :: (a -> b) -> (a -> b -> b) -> Vector 1 a -> b #

foldlMap1' :: (a -> b) -> (b -> a -> b) -> Vector 1 a -> b #

foldlMap1 :: (a -> b) -> (b -> a -> b) -> Vector 1 a -> b #

foldrMap1' :: (a -> b) -> (a -> b -> b) -> Vector 1 a -> b #

Foldable1 (Vector 2) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

fold1 :: Semigroup m => Vector 2 m -> m #

foldMap1 :: Semigroup m => (a -> m) -> Vector 2 a -> m #

foldMap1' :: Semigroup m => (a -> m) -> Vector 2 a -> m #

toNonEmpty :: Vector 2 a -> NonEmpty a #

maximum :: Ord a => Vector 2 a -> a #

minimum :: Ord a => Vector 2 a -> a #

head :: Vector 2 a -> a #

last :: Vector 2 a -> a #

foldrMap1 :: (a -> b) -> (a -> b -> b) -> Vector 2 a -> b #

foldlMap1' :: (a -> b) -> (b -> a -> b) -> Vector 2 a -> b #

foldlMap1 :: (a -> b) -> (b -> a -> b) -> Vector 2 a -> b #

foldrMap1' :: (a -> b) -> (a -> b -> b) -> Vector 2 a -> b #

Foldable1 (Vector 3) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

fold1 :: Semigroup m => Vector 3 m -> m #

foldMap1 :: Semigroup m => (a -> m) -> Vector 3 a -> m #

foldMap1' :: Semigroup m => (a -> m) -> Vector 3 a -> m #

toNonEmpty :: Vector 3 a -> NonEmpty a #

maximum :: Ord a => Vector 3 a -> a #

minimum :: Ord a => Vector 3 a -> a #

head :: Vector 3 a -> a #

last :: Vector 3 a -> a #

foldrMap1 :: (a -> b) -> (a -> b -> b) -> Vector 3 a -> b #

foldlMap1' :: (a -> b) -> (b -> a -> b) -> Vector 3 a -> b #

foldlMap1 :: (a -> b) -> (b -> a -> b) -> Vector 3 a -> b #

foldrMap1' :: (a -> b) -> (a -> b -> b) -> Vector 3 a -> b #

Foldable1 (Vector 4) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

fold1 :: Semigroup m => Vector 4 m -> m #

foldMap1 :: Semigroup m => (a -> m) -> Vector 4 a -> m #

foldMap1' :: Semigroup m => (a -> m) -> Vector 4 a -> m #

toNonEmpty :: Vector 4 a -> NonEmpty a #

maximum :: Ord a => Vector 4 a -> a #

minimum :: Ord a => Vector 4 a -> a #

head :: Vector 4 a -> a #

last :: Vector 4 a -> a #

foldrMap1 :: (a -> b) -> (a -> b -> b) -> Vector 4 a -> b #

foldlMap1' :: (a -> b) -> (b -> a -> b) -> Vector 4 a -> b #

foldlMap1 :: (a -> b) -> (b -> a -> b) -> Vector 4 a -> b #

foldrMap1' :: (a -> b) -> (a -> b -> b) -> Vector 4 a -> b #

Traversable (Vector 1) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

traverse :: Applicative f => (a -> f b) -> Vector 1 a -> f (Vector 1 b) #

sequenceA :: Applicative f => Vector 1 (f a) -> f (Vector 1 a) #

mapM :: Monad m => (a -> m b) -> Vector 1 a -> m (Vector 1 b) #

sequence :: Monad m => Vector 1 (m a) -> m (Vector 1 a) #

Traversable (Vector 2) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

traverse :: Applicative f => (a -> f b) -> Vector 2 a -> f (Vector 2 b) #

sequenceA :: Applicative f => Vector 2 (f a) -> f (Vector 2 a) #

mapM :: Monad m => (a -> m b) -> Vector 2 a -> m (Vector 2 b) #

sequence :: Monad m => Vector 2 (m a) -> m (Vector 2 a) #

Traversable (Vector 3) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

traverse :: Applicative f => (a -> f b) -> Vector 3 a -> f (Vector 3 b) #

sequenceA :: Applicative f => Vector 3 (f a) -> f (Vector 3 a) #

mapM :: Monad m => (a -> m b) -> Vector 3 a -> m (Vector 3 b) #

sequence :: Monad m => Vector 3 (m a) -> m (Vector 3 a) #

Traversable (Vector 4) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

traverse :: Applicative f => (a -> f b) -> Vector 4 a -> f (Vector 4 b) #

sequenceA :: Applicative f => Vector 4 (f a) -> f (Vector 4 a) #

mapM :: Monad m => (a -> m b) -> Vector 4 a -> m (Vector 4 b) #

sequence :: Monad m => Vector 4 (m a) -> m (Vector 4 a) #

Functor (Vector 1) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

fmap :: (a -> b) -> Vector 1 a -> Vector 1 b #

(<$) :: a -> Vector 1 b -> Vector 1 a #

Functor (Vector 2) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

fmap :: (a -> b) -> Vector 2 a -> Vector 2 b #

(<$) :: a -> Vector 2 b -> Vector 2 a #

Functor (Vector 3) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

fmap :: (a -> b) -> Vector 3 a -> Vector 3 b #

(<$) :: a -> Vector 3 b -> Vector 3 a #

Functor (Vector 4) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

fmap :: (a -> b) -> Vector 4 a -> Vector 4 b #

(<$) :: a -> Vector 4 b -> Vector 4 a #

Semialign (Vector 1) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

align :: Vector 1 a -> Vector 1 b -> Vector 1 (These a b) Source #

alignWith :: (These a b -> c) -> Vector 1 a -> Vector 1 b -> Vector 1 c Source #

Semialign (Vector 2) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

align :: Vector 2 a -> Vector 2 b -> Vector 2 (These a b) Source #

alignWith :: (These a b -> c) -> Vector 2 a -> Vector 2 b -> Vector 2 c Source #

Semialign (Vector 3) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

align :: Vector 3 a -> Vector 3 b -> Vector 3 (These a b) Source #

alignWith :: (These a b -> c) -> Vector 3 a -> Vector 3 b -> Vector 3 c Source #

Semialign (Vector 4) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

align :: Vector 4 a -> Vector 4 b -> Vector 4 (These a b) Source #

alignWith :: (These a b -> c) -> Vector 4 a -> Vector 4 b -> Vector 4 c Source #

Zip (Vector 1) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

zip :: Vector 1 a -> Vector 1 b -> Vector 1 (a, b) Source #

zipWith :: (a -> b -> c) -> Vector 1 a -> Vector 1 b -> Vector 1 c Source #

Zip (Vector 2) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

zip :: Vector 2 a -> Vector 2 b -> Vector 2 (a, b) Source #

zipWith :: (a -> b -> c) -> Vector 2 a -> Vector 2 b -> Vector 2 c Source #

Zip (Vector 3) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

zip :: Vector 3 a -> Vector 3 b -> Vector 3 (a, b) Source #

zipWith :: (a -> b -> c) -> Vector 3 a -> Vector 3 b -> Vector 3 c Source #

Zip (Vector 4) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

zip :: Vector 4 a -> Vector 4 b -> Vector 4 (a, b) Source #

zipWith :: (a -> b -> c) -> Vector 4 a -> Vector 4 b -> Vector 4 c Source #

Traversable1 (Vector 1) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

traverse1 :: Apply f => (a -> f b) -> Vector 1 a -> f (Vector 1 b) Source #

sequence1 :: Apply f => Vector 1 (f b) -> f (Vector 1 b) Source #

Traversable1 (Vector 2) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

traverse1 :: Apply f => (a -> f b) -> Vector 2 a -> f (Vector 2 b) Source #

sequence1 :: Apply f => Vector 2 (f b) -> f (Vector 2 b) Source #

Traversable1 (Vector 3) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

traverse1 :: Apply f => (a -> f b) -> Vector 3 a -> f (Vector 3 b) Source #

sequence1 :: Apply f => Vector 3 (f b) -> f (Vector 3 b) Source #

Traversable1 (Vector 4) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

traverse1 :: Apply f => (a -> f b) -> Vector 4 a -> f (Vector 4 b) Source #

sequence1 :: Apply f => Vector 4 (f b) -> f (Vector 4 b) Source #

FromYAML r => FromYAML (Vector 1 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

parseYAML :: Node Pos -> Parser (Vector 1 r) Source #

FromYAML r => FromYAML (Vector 2 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

parseYAML :: Node Pos -> Parser (Vector 2 r) Source #

FromYAML r => FromYAML (Vector 3 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

parseYAML :: Node Pos -> Parser (Vector 3 r) Source #

FromYAML r => FromYAML (Vector 4 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

parseYAML :: Node Pos -> Parser (Vector 4 r) Source #

(ToYAML r, HasComponents (Vector d r) (Vector d r)) => ToYAML (Vector d r) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

toYAML :: Vector d r -> Node () Source #

Generic (Vector 1 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

Associated Types

type Rep (Vector 1 r) :: Type -> Type #

Methods

from :: Vector 1 r -> Rep (Vector 1 r) x #

to :: Rep (Vector 1 r) x -> Vector 1 r #

Generic (Vector 2 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

Associated Types

type Rep (Vector 2 r) :: Type -> Type #

Methods

from :: Vector 2 r -> Rep (Vector 2 r) x #

to :: Rep (Vector 2 r) x -> Vector 2 r #

Generic (Vector 3 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

Associated Types

type Rep (Vector 3 r) :: Type -> Type #

Methods

from :: Vector 3 r -> Rep (Vector 3 r) x #

to :: Rep (Vector 3 r) x -> Vector 3 r #

Generic (Vector 4 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

Associated Types

type Rep (Vector 4 r) :: Type -> Type #

Methods

from :: Vector 4 r -> Rep (Vector 4 r) x #

to :: Rep (Vector 4 r) x -> Vector 4 r #

(Vector_ (Vector d r) d r, Read r, KnownNat d) => Read (Vector d r) Source # 
Instance details

Defined in HGeometry.Vector.Class

(HasComponents (Vector d r) (Vector d r), Show r, KnownNat d) => Show (Vector d r) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

showsPrec :: Int -> Vector d r -> ShowS #

show :: Vector d r -> String #

showList :: [Vector d r] -> ShowS #

NFData r => NFData (Vector 1 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

rnf :: Vector 1 r -> () #

NFData r => NFData (Vector 2 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

rnf :: Vector 2 r -> () #

NFData r => NFData (Vector 3 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

rnf :: Vector 3 r -> () #

NFData r => NFData (Vector 4 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

rnf :: Vector 4 r -> () #

Eq r => Eq (Vector 1 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

(==) :: Vector 1 r -> Vector 1 r -> Bool #

(/=) :: Vector 1 r -> Vector 1 r -> Bool #

Eq r => Eq (Vector 2 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

(==) :: Vector 2 r -> Vector 2 r -> Bool #

(/=) :: Vector 2 r -> Vector 2 r -> Bool #

Eq r => Eq (Vector 3 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

(==) :: Vector 3 r -> Vector 3 r -> Bool #

(/=) :: Vector 3 r -> Vector 3 r -> Bool #

Eq r => Eq (Vector 4 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

(==) :: Vector 4 r -> Vector 4 r -> Bool #

(/=) :: Vector 4 r -> Vector 4 r -> Bool #

Ord r => Ord (Vector 1 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

compare :: Vector 1 r -> Vector 1 r -> Ordering #

(<) :: Vector 1 r -> Vector 1 r -> Bool #

(<=) :: Vector 1 r -> Vector 1 r -> Bool #

(>) :: Vector 1 r -> Vector 1 r -> Bool #

(>=) :: Vector 1 r -> Vector 1 r -> Bool #

max :: Vector 1 r -> Vector 1 r -> Vector 1 r #

min :: Vector 1 r -> Vector 1 r -> Vector 1 r #

Ord r => Ord (Vector 2 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

compare :: Vector 2 r -> Vector 2 r -> Ordering #

(<) :: Vector 2 r -> Vector 2 r -> Bool #

(<=) :: Vector 2 r -> Vector 2 r -> Bool #

(>) :: Vector 2 r -> Vector 2 r -> Bool #

(>=) :: Vector 2 r -> Vector 2 r -> Bool #

max :: Vector 2 r -> Vector 2 r -> Vector 2 r #

min :: Vector 2 r -> Vector 2 r -> Vector 2 r #

Ord r => Ord (Vector 3 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

compare :: Vector 3 r -> Vector 3 r -> Ordering #

(<) :: Vector 3 r -> Vector 3 r -> Bool #

(<=) :: Vector 3 r -> Vector 3 r -> Bool #

(>) :: Vector 3 r -> Vector 3 r -> Bool #

(>=) :: Vector 3 r -> Vector 3 r -> Bool #

max :: Vector 3 r -> Vector 3 r -> Vector 3 r #

min :: Vector 3 r -> Vector 3 r -> Vector 3 r #

Ord r => Ord (Vector 4 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

compare :: Vector 4 r -> Vector 4 r -> Ordering #

(<) :: Vector 4 r -> Vector 4 r -> Bool #

(<=) :: Vector 4 r -> Vector 4 r -> Bool #

(>) :: Vector 4 r -> Vector 4 r -> Bool #

(>=) :: Vector 4 r -> Vector 4 r -> Bool #

max :: Vector 4 r -> Vector 4 r -> Vector 4 r #

min :: Vector 4 r -> Vector 4 r -> Vector 4 r #

Ixed (Vector 1 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

ix :: Index (Vector 1 r) -> Traversal' (Vector 1 r) (IxValue (Vector 1 r)) Source #

Ixed (Vector 2 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

ix :: Index (Vector 2 r) -> Traversal' (Vector 2 r) (IxValue (Vector 2 r)) Source #

Ixed (Vector 3 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

ix :: Index (Vector 3 r) -> Traversal' (Vector 3 r) (IxValue (Vector 3 r)) Source #

Ixed (Vector 4 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

ix :: Index (Vector 4 r) -> Traversal' (Vector 4 r) (IxValue (Vector 4 r)) Source #

(Additive_ (Vector d r) d r, Uniform r, UniformRange r) => Random (Vector d r) Source # 
Instance details

Defined in HGeometry.Vector.Class

Methods

randomR :: RandomGen g => (Vector d r, Vector d r) -> g -> (Vector d r, g) Source #

random :: RandomGen g => g -> (Vector d r, g) Source #

randomRs :: RandomGen g => (Vector d r, Vector d r) -> g -> [Vector d r] Source #

randoms :: RandomGen g => g -> [Vector d r] Source #

(Vector_ (Vector d r) d r, Uniform r) => Uniform (Vector d r) Source # 
Instance details

Defined in HGeometry.Vector.Class

Methods

uniformM :: StatefulGen g m => g -> m (Vector d r) Source #

(Additive_ (Vector d r) d r, UniformRange r) => UniformRange (Vector d r) Source # 
Instance details

Defined in HGeometry.Vector.Class

Methods

uniformRM :: StatefulGen g m => (Vector d r, Vector d r) -> g -> m (Vector d r) Source #

(Unbox r, Vector_ (Vector d r) d r) => Unbox (Vector d r) Source # 
Instance details

Defined in HGeometry.Vector

Additive_ (Vector 1 r) 1 r Source # 
Instance details

Defined in HGeometry.Vector.Class

Methods

liftU2 :: (r -> r -> r) -> Vector 1 r -> Vector 1 r -> Vector 1 r Source #

liftI2A :: Apply f => (r -> r -> f r) -> Vector 1 r -> Vector 1 r -> f (Vector 1 r) Source #

Additive_ (Vector 2 r) 2 r Source # 
Instance details

Defined in HGeometry.Vector.Class

Methods

liftU2 :: (r -> r -> r) -> Vector 2 r -> Vector 2 r -> Vector 2 r Source #

liftI2A :: Apply f => (r -> r -> f r) -> Vector 2 r -> Vector 2 r -> f (Vector 2 r) Source #

Additive_ (Vector 3 r) 3 r Source # 
Instance details

Defined in HGeometry.Vector.Class

Methods

liftU2 :: (r -> r -> r) -> Vector 3 r -> Vector 3 r -> Vector 3 r Source #

liftI2A :: Apply f => (r -> r -> f r) -> Vector 3 r -> Vector 3 r -> f (Vector 3 r) Source #

Additive_ (Vector 4 r) 4 r Source # 
Instance details

Defined in HGeometry.Vector.Class

Methods

liftU2 :: (r -> r -> r) -> Vector 4 r -> Vector 4 r -> Vector 4 r Source #

liftI2A :: Apply f => (r -> r -> f r) -> Vector 4 r -> Vector 4 r -> f (Vector 4 r) Source #

Metric_ (Vector 1 r) 1 r Source # 
Instance details

Defined in HGeometry.Vector.Class

Methods

dot :: Vector 1 r -> Vector 1 r -> r Source #

quadrance :: Vector 1 r -> r Source #

qd :: Vector 1 r -> Vector 1 r -> r Source #

norm :: Vector 1 r -> r Source #

signorm :: Vector 1 r -> Vector 1 r Source #

Metric_ (Vector 2 r) 2 r Source # 
Instance details

Defined in HGeometry.Vector.Class

Methods

dot :: Vector 2 r -> Vector 2 r -> r Source #

quadrance :: Vector 2 r -> r Source #

qd :: Vector 2 r -> Vector 2 r -> r Source #

norm :: Vector 2 r -> r Source #

signorm :: Vector 2 r -> Vector 2 r Source #

Metric_ (Vector 3 r) 3 r Source # 
Instance details

Defined in HGeometry.Vector.Class

Methods

dot :: Vector 3 r -> Vector 3 r -> r Source #

quadrance :: Vector 3 r -> r Source #

qd :: Vector 3 r -> Vector 3 r -> r Source #

norm :: Vector 3 r -> r Source #

signorm :: Vector 3 r -> Vector 3 r Source #

Metric_ (Vector 4 r) 4 r Source # 
Instance details

Defined in HGeometry.Vector.Class

Methods

dot :: Vector 4 r -> Vector 4 r -> r Source #

quadrance :: Vector 4 r -> r Source #

qd :: Vector 4 r -> Vector 4 r -> r Source #

norm :: Vector 4 r -> r Source #

signorm :: Vector 4 r -> Vector 4 r Source #

Vector_ (Vector 1 r) 1 r Source # 
Instance details

Defined in HGeometry.Vector.Class

Methods

generateA :: Applicative f => (Int -> f r) -> f (Vector 1 r) Source #

component' :: Int -> IndexedTraversal' Int (Vector 1 r) r Source #

Vector_ (Vector 2 r) 2 r Source # 
Instance details

Defined in HGeometry.Vector.Class

Methods

generateA :: Applicative f => (Int -> f r) -> f (Vector 2 r) Source #

component' :: Int -> IndexedTraversal' Int (Vector 2 r) r Source #

Vector_ (Vector 3 r) 3 r Source # 
Instance details

Defined in HGeometry.Vector.Class

Methods

generateA :: Applicative f => (Int -> f r) -> f (Vector 3 r) Source #

component' :: Int -> IndexedTraversal' Int (Vector 3 r) r Source #

Vector_ (Vector 4 r) 4 r Source # 
Instance details

Defined in HGeometry.Vector.Class

Methods

generateA :: Applicative f => (Int -> f r) -> f (Vector 4 r) Source #

component' :: Int -> IndexedTraversal' Int (Vector 4 r) r Source #

HasComponents (Vector 1 r) (Vector 1 s) Source # 
Instance details

Defined in HGeometry.Vector.Type

HasComponents (Vector 2 r) (Vector 2 s) Source # 
Instance details

Defined in HGeometry.Vector.Type

HasComponents (Vector 3 r) (Vector 3 s) Source # 
Instance details

Defined in HGeometry.Vector.Type

HasComponents (Vector 4 r) (Vector 4 s) Source # 
Instance details

Defined in HGeometry.Vector.Type

AsVector_ (Vector d r) (Vector d s) d r s Source # 
Instance details

Defined in HGeometry.Vector.Class

Methods

_Vector :: Iso (Vector d r) (Vector d s) (Vector d r) (Vector d s) Source #

newtype Vector 1 r Source # 
Instance details

Defined in HGeometry.Vector.Type

newtype Vector 1 r = MkVector1 (V1 r)
newtype Vector 2 r Source # 
Instance details

Defined in HGeometry.Vector.Type

newtype Vector 2 r = MkVector2 (V2 r)
newtype Vector 3 r Source # 
Instance details

Defined in HGeometry.Vector.Type

newtype Vector 3 r = MkVector3 (V3 r)
newtype Vector 4 r Source # 
Instance details

Defined in HGeometry.Vector.Type

newtype Vector 4 r = MkVector4 (V4 r)
newtype MVector s (Vector d r) Source #

elements of the vector are stored consecutively

Instance details

Defined in HGeometry.Vector

newtype MVector s (Vector d r) = MV_VectorD (MVector s r)
type Rep (Vector 1 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

type Rep (Vector 1 r) = D1 ('MetaData "Vector" "HGeometry.Vector.Type" "hgeometry-1.0.0.0-inplace-vector" 'True) (C1 ('MetaCons "MkVector1" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (V1 r))))
type Rep (Vector 2 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

type Rep (Vector 2 r) = D1 ('MetaData "Vector" "HGeometry.Vector.Type" "hgeometry-1.0.0.0-inplace-vector" 'True) (C1 ('MetaCons "MkVector2" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (V2 r))))
type Rep (Vector 3 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

type Rep (Vector 3 r) = D1 ('MetaData "Vector" "HGeometry.Vector.Type" "hgeometry-1.0.0.0-inplace-vector" 'True) (C1 ('MetaCons "MkVector3" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (V3 r))))
type Rep (Vector 4 r) Source # 
Instance details

Defined in HGeometry.Vector.Type

type Rep (Vector 4 r) = D1 ('MetaData "Vector" "HGeometry.Vector.Type" "hgeometry-1.0.0.0-inplace-vector" 'True) (C1 ('MetaCons "MkVector4" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (V4 r))))
type Dimension (Vector d r) Source # 
Instance details

Defined in HGeometry.Vector.Type

type Dimension (Vector d r) = d
type NumType (Vector d r) Source # 
Instance details

Defined in HGeometry.Vector.Type

type NumType (Vector d r) = r
type Index (Vector d r) Source # 
Instance details

Defined in HGeometry.Vector.Type

type Index (Vector d r) = Int
type IxValue (Vector d r) Source # 
Instance details

Defined in HGeometry.Vector.Type

type IxValue (Vector d r) = r
newtype Vector (Vector d r) Source # 
Instance details

Defined in HGeometry.Vector

newtype Vector (Vector d r) = V_VectorD (Vector r)

class HasComponents vector vector' where Source #

Types that have a components indexed traversal

Methods

components :: IndexedTraversal1 Int vector vector' (IxValue vector) (IxValue vector') Source #

An Indexed Traversal over the components of a vector

>>> myVec3 ^.. components
[1,2,3]
>>> myVec3 ^@.. components
[(0,1),(1,2),(2,3)]

Instances

Instances details
HasComponents (V1 r) (V1 s) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

components :: IndexedTraversal1 Int (V1 r) (V1 s) (IxValue (V1 r)) (IxValue (V1 s)) Source #

HasComponents (V2 r) (V2 s) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

components :: IndexedTraversal1 Int (V2 r) (V2 s) (IxValue (V2 r)) (IxValue (V2 s)) Source #

HasComponents (V3 r) (V3 s) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

components :: IndexedTraversal1 Int (V3 r) (V3 s) (IxValue (V3 r)) (IxValue (V3 s)) Source #

HasComponents (V4 r) (V4 s) Source # 
Instance details

Defined in HGeometry.Vector.Type

Methods

components :: IndexedTraversal1 Int (V4 r) (V4 s) (IxValue (V4 r)) (IxValue (V4 s)) Source #

HasComponents (Vector 1 r) (Vector 1 s) Source # 
Instance details

Defined in HGeometry.Vector.Type

HasComponents (Vector 2 r) (Vector 2 s) Source # 
Instance details

Defined in HGeometry.Vector.Type

HasComponents (Vector 3 r) (Vector 3 s) Source # 
Instance details

Defined in HGeometry.Vector.Type

HasComponents (Vector 4 r) (Vector 4 s) Source # 
Instance details

Defined in HGeometry.Vector.Type

isScalarMultipleOf :: (Eq r, Num r, Metric_ vector d r) => vector -> vector -> Bool Source #

'isScalarmultipleof u v' test if v is a scalar multiple of u.

>>> Vector2 1 1 `isScalarMultipleOf` Vector2 10 10
True
>>> Vector3 1 1 2 `isScalarMultipleOf` Vector3 10 10 20
True
>>> Vector2 1 1 `isScalarMultipleOf` Vector2 10 1
False
>>> Vector2 1 1 `isScalarMultipleOf` Vector2 (-1) (-1)
True
>>> Vector2 1 1 `isScalarMultipleOf` Vector2 11.1 11.1
True
>>> Vector2 1 1 `isScalarMultipleOf` Vector2 11.1 11.2
False
>>> Vector2 2 1 `isScalarMultipleOf` Vector2 11.1 11.2
False
>>> Vector2 2 1 `isScalarMultipleOf` Vector2 4 2
True
>>> Vector2 2 1 `isScalarMultipleOf` Vector2 4 0
False
>>> Vector3 2 1 0 `isScalarMultipleOf` Vector3 4 0 5
False
>>> Vector3 0 0 0 `isScalarMultipleOf` Vector3 4 0 5
True

scalarMultiple :: (Eq r, Fractional r, Additive_ vector d r) => vector -> vector -> Maybe r Source #

scalarMultiple u v computes the scalar labmda s.t. v = lambda * u (if it exists)

sameDirection :: (Additive_ vector d r, Num r, Eq r) => vector -> vector -> Bool Source #

Given two colinar vectors, u and v, test if they point in the same direction, i.e. iff scalarMultiple' u v == Just lambda, with lambda > 0

pre: u and v are colinear, u and v are non-zero

Special vector operations

cross :: Num r => Vector 3 r -> Vector 3 r -> Vector 3 r Source #

cross product

Orphan instances

(Vector Vector r, Vector_ (Vector d r) d r) => Vector Vector (Vector d r) Source # 
Instance details

(MVector MVector r, Vector_ (Vector d r) d r) => MVector MVector (Vector d r) Source # 
Instance details

Methods

basicLength :: MVector s (Vector d r) -> Int Source #

basicUnsafeSlice :: Int -> Int -> MVector s (Vector d r) -> MVector s (Vector d r) Source #

basicOverlaps :: MVector s (Vector d r) -> MVector s (Vector d r) -> Bool Source #

basicUnsafeNew :: Int -> ST s (MVector s (Vector d r)) Source #

basicInitialize :: MVector s (Vector d r) -> ST s () Source #

basicUnsafeReplicate :: Int -> Vector d r -> ST s (MVector s (Vector d r)) Source #

basicUnsafeRead :: MVector s (Vector d r) -> Int -> ST s (Vector d r) Source #

basicUnsafeWrite :: MVector s (Vector d r) -> Int -> Vector d r -> ST s () Source #

basicClear :: MVector s (Vector d r) -> ST s () Source #

basicSet :: MVector s (Vector d r) -> Vector d r -> ST s () Source #

basicUnsafeCopy :: MVector s (Vector d r) -> MVector s (Vector d r) -> ST s () Source #

basicUnsafeMove :: MVector s (Vector d r) -> MVector s (Vector d r) -> ST s () Source #

basicUnsafeGrow :: MVector s (Vector d r) -> Int -> ST s (MVector s (Vector d r)) Source #

(Unbox r, Vector_ (Vector d r) d r) => Unbox (Vector d r) Source # 
Instance details