| Copyright | (C) Frank Staals |
|---|---|
| License | see the LICENSE file |
| Maintainer | Frank Staals |
| Safe Haskell | None |
| Language | Haskell2010 |
Data.Geometry.Vector
Contents
Description
\(d\)-dimensional vectors.
Synopsis
- module Data.Geometry.Vector.VectorFamily
- data C (n :: Nat) = C
- class Additive (Diff p) => Affine (p :: Type -> Type) 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, Num a) => f a -> f a -> a
- norm :: (Metric f, Floating a) => f a -> a
- signorm :: (Metric f, Floating a) => f a -> f 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
- replicate :: Vector v a => a -> v a
- imap :: (Vector v a, Vector v b) => (Int -> a -> b) -> v a -> v b
- xComponent :: (1 <= d, Arity d) => Lens' (Vector d r) r
- yComponent :: (2 <= d, Arity d) => Lens' (Vector d r) r
- zComponent :: (3 <= d, Arity d) => Lens' (Vector d r) r
Documentation
A proxy which can be used for the coordinates.
Constructors
| C |
class Additive (Diff p) => Affine (p :: Type -> Type) where #
Instances
| Affine [] | |
| Affine Maybe | |
| Affine Complex | |
| Affine ZipList | |
| Affine Identity | |
| Affine IntMap | |
| Affine Vector | |
| Affine Plucker | |
| Affine Quaternion | |
| Affine V0 | |
| Affine V1 | |
| Affine V2 | |
| Affine V3 | |
| Affine V4 | |
| Ord k => Affine (Map k) | |
| (Eq k, Hashable k) => Affine (HashMap k) | |
| Additive f => Affine (Point f) | |
| Arity d => Affine (Vector d) Source # | |
Defined in Data.Geometry.Vector.VectorFixed | |
| ImplicitArity d => Affine (VectorFamily d) Source # | |
Defined in Data.Geometry.Vector.VectorFamilyPeano Associated Types type Diff (VectorFamily d) :: Type -> Type # Methods (.-.) :: Num a => VectorFamily d a -> VectorFamily d a -> Diff (VectorFamily d) a # (.+^) :: Num a => VectorFamily d a -> Diff (VectorFamily d) a -> VectorFamily d a # (.-^) :: Num a => VectorFamily d a -> Diff (VectorFamily d) a -> VectorFamily d a # | |
| Arity d => Affine (Vector d) Source # | |
Defined in Data.Geometry.Vector.VectorFamily | |
| Arity d => Affine (Point d) Source # | |
| Dim n => Affine (V n) | |
| Affine ((->) b :: Type -> Type) | |
isScalarMultipleOf :: (Eq r, Fractional r, Arity d) => Vector d r -> Vector d r -> Bool Source #
Test if v is a scalar multiple of u.
>>>Vector2 1 1 `isScalarMultipleOf` Vector2 10 10True>>>Vector2 1 1 `isScalarMultipleOf` Vector2 10 1False>>>Vector2 1 1 `isScalarMultipleOf` Vector2 11.1 11.1True>>>Vector2 1 1 `isScalarMultipleOf` Vector2 11.1 11.2False>>>Vector2 2 1 `isScalarMultipleOf` Vector2 11.1 11.2False>>>Vector2 2 1 `isScalarMultipleOf` Vector2 4 2True>>>Vector2 2 1 `isScalarMultipleOf` Vector2 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)