linear-1.11: Linear Algebra

Portabilitynon-portable
Stabilityexperimental
MaintainerEdward Kmett <ekmett@gmail.com>
Safe HaskellTrustworthy

Linear.Plucker

Contents

Description

Pl

Synopsis

Documentation

data Plucker a Source

Pl

Constructors

Plucker !a !a !a !a !a !a 

Instances

Monad Plucker 
Functor Plucker 
MonadFix Plucker 
Applicative Plucker 
Foldable Plucker 
Traversable Plucker 
Generic1 Plucker 
Distributive Plucker 
Representable Plucker 
Traversable1 Plucker 
Foldable1 Plucker 
Apply Plucker 
Bind Plucker 
MonadZip Plucker 
Additive Plucker 
Metric Plucker 
Trace Plucker 
Affine Plucker 
Unbox a => Vector Vector (Plucker a) 
Unbox a => MVector MVector (Plucker a) 
Eq a => Eq (Plucker a) 
Fractional a => Fractional (Plucker a) 
Num a => Num (Plucker a) 
Ord a => Ord (Plucker a) 
Read a => Read (Plucker a) 
Show a => Show (Plucker a) 
Ix a => Ix (Plucker a) 
Generic (Plucker a) 
Hashable a => Hashable (Plucker a) 
Storable a => Storable (Plucker a) 
Unbox a => Unbox (Plucker a) 
Ixed (Plucker a) 
Epsilon a => Epsilon (Plucker a) 
FunctorWithIndex (E Plucker) Plucker 
FoldableWithIndex (E Plucker) Plucker 
TraversableWithIndex (E Plucker) Plucker 
Each (Plucker a) (Plucker b) a b 

squaredError :: (Eq a, Num a) => Plucker a -> aSource

Valid Pl

isotropic :: Epsilon a => Plucker a -> BoolSource

Checks if the line is near-isotropic (isotropic vectors in this quadratic space represent lines in real 3d space).

(><) :: Num a => Plucker a -> Plucker a -> aSource

This isn't th actual metric because this bilinear form gives rise to an isotropic quadratic space

plucker :: Num a => V4 a -> V4 a -> Plucker aSource

Given a pair of points represented by homogeneous coordinates generate Pl

plucker3D :: Num a => V3 a -> V3 a -> Plucker aSource

Given a pair of 3D points, generate Pl

Operations on lines

parallel :: Epsilon a => Plucker a -> Plucker a -> BoolSource

Checks if two lines are parallel.

intersects :: (Epsilon a, Ord a) => Plucker a -> Plucker a -> BoolSource

Checks if two lines intersect (or nearly intersect).

data LinePass Source

Describe how two lines pass each other.

Constructors

Coplanar

The lines are coplanar (parallel or intersecting).

Clockwise

The lines pass each other clockwise (right-handed screw)

Counterclockwise

The lines pass each other counterclockwise (left-handed screw).

Instances

Eq LinePass 
Show LinePass 
Generic LinePass 

passes :: (Epsilon a, Num a, Ord a) => Plucker a -> Plucker a -> LinePassSource

Check how two lines pass each other. passes l1 l2 describes l2 when looking down l1.

quadranceToOrigin :: Fractional a => Plucker a -> aSource

The minimum squared distance of a line from the origin.

closestToOrigin :: Fractional a => Plucker a -> V3 aSource

The point where a line is closest to the origin.

isLine :: Epsilon a => Plucker a -> BoolSource

Not all 6-dimensional points correspond to a line in 3D. This predicate tests that a Pl

data Coincides a whereSource

When lines are represented as Pl

Constructors

Line :: (Epsilon a, Fractional a) => Plucker a -> Coincides a 
Ray :: (Epsilon a, Fractional a, Ord a) => Plucker a -> Coincides a 

Instances

Eq (Coincides a) 

Basis elements

p01 :: Lens' (Plucker a) aSource

These elements form a basis for the Pl

p02 :: Lens' (Plucker a) aSource

These elements form a basis for the Pl

p03 :: Lens' (Plucker a) aSource

These elements form a basis for the Pl

p10 :: (Functor f, Num a) => (a -> f a) -> Plucker a -> f (Plucker a)Source

These elements form an alternate basis for the Pl

p12 :: Lens' (Plucker a) aSource

These elements form a basis for the Pl

p13 :: (Functor f, Num a) => (a -> f a) -> Plucker a -> f (Plucker a)Source

These elements form an alternate basis for the Pl

p20 :: (Functor f, Num a) => (a -> f a) -> Plucker a -> f (Plucker a)Source

These elements form an alternate basis for the Pl

p21 :: (Functor f, Num a) => (a -> f a) -> Plucker a -> f (Plucker a)Source

These elements form an alternate basis for the Pl

p23 :: Lens' (Plucker a) aSource

These elements form a basis for the Pl

p30 :: (Functor f, Num a) => (a -> f a) -> Plucker a -> f (Plucker a)Source

These elements form an alternate basis for the Pl

p31 :: Lens' (Plucker a) aSource

These elements form a basis for the Pl

p32 :: (Functor f, Num a) => (a -> f a) -> Plucker a -> f (Plucker a)Source

These elements form an alternate basis for the Pl