| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Data.Geometry.Vector
- module Data.Geometry.Vector.VectorFixed
- class Additive (Diff p) => Affine p where
- qdA :: (Affine p, Foldable (Diff p), Num a) => p a -> p a -> a
- distanceA :: (Floating a, Foldable (Diff p), Affine p) => p a -> p a -> a
- dot :: Metric f => forall a. Num a => f a -> f a -> a
- norm :: Metric f => forall a. Floating a => f a -> a
- isScalarMultipleOf :: (Eq r, Fractional r, Arity d) => Vector d r -> Vector d r -> Bool
- scalarMultiple :: (Eq r, Fractional r, Arity d) => Vector d r -> Vector d r -> Maybe r
Documentation
class Additive (Diff p) => Affine p where #
An affine space is roughly a vector space in which we have forgotten or at least pretend to have forgotten the origin.
a .+^ (b .-. a) = b@ (a .+^ u) .+^ v = a .+^ (u ^+^ v)@ (a .-. b) ^+^ v = (a .+^ v) .-. q@
Methods
(.-.) :: Num a => p a -> p a -> Diff p a infixl 6 #
Get the difference between two points as a vector offset.
(.+^) :: Num a => p a -> Diff p a -> p a infixl 6 #
Add a vector offset to a point.
(.-^) :: Num a => p a -> Diff p a -> p a infixl 6 #
Subtract a vector offset from a point.
Instances
| Affine [] | |
| Affine Maybe | |
| Affine Vector | |
| Affine Identity | |
| Affine Complex | |
| Affine ZipList | |
| Affine IntMap | |
| Affine Quaternion | |
| Affine Plucker | |
| Affine V4 | |
| Affine V3 | |
| Affine V2 | |
| Affine V1 | |
| Affine V0 | |
| Affine ((->) b) | |
| Ord k => Affine (Map k) | |
| (Eq k, Hashable k) => Affine (HashMap k) | |
| Additive f => Affine (Point f) | |
| Arity d => Affine (Vector d) # | |
| Arity d => Affine (Point d) # | |
| Dim * n => Affine (V * n) | |
qdA :: (Affine p, Foldable (Diff p), Num a) => p a -> p a -> a #
Compute the quadrance of the difference (the square of the distance)
distanceA :: (Floating a, Foldable (Diff p), Affine p) => p a -> p a -> a #
Distance between two points in an affine space
dot :: Metric f => forall a. Num a => f a -> f a -> a #
Compute the inner product of two vectors or (equivalently)
convert a vector f a into a covector f a -> a.
>>>V2 1 2 `dot` V2 3 411
norm :: Metric f => forall a. Floating a => f a -> a #
Compute the norm of a vector in a metric space
isScalarMultipleOf :: (Eq r, Fractional r, Arity d) => Vector d r -> Vector d r -> Bool Source #
Test if v is a scalar multiple of u.
>>>v2 1 1 `isScalarMultipleOf` v2 10 10True>>>v2 1 1 `isScalarMultipleOf` v2 10 1False>>>v2 1 1 `isScalarMultipleOf` v2 11.1 11.1True>>>v2 1 1 `isScalarMultipleOf` v2 11.1 11.2False>>>v2 2 1 `isScalarMultipleOf` v2 11.1 11.2False>>>v2 2 1 `isScalarMultipleOf` v2 4 2True>>>v2 2 1 `isScalarMultipleOf` v2 4 0False
scalarMultiple :: (Eq r, Fractional r, Arity d) => Vector d r -> Vector d r -> Maybe r Source #
Get the scalar labmda s.t. v = lambda * u (if it exists)