linear-1.20.7: Linear Algebra

Linear.Plucker

Description

Plücker coordinates for lines in 3d homogeneous space.

Synopsis

# Documentation

data Plucker a #

Plücker coordinates for lines in a 3-dimensional space.

Constructors

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

Instances

squaredError :: Num a => Plucker a -> a #

Valid Plücker coordinates p will have squaredError p == 0

That said, floating point makes a mockery of this claim, so you may want to use nearZero.

isotropic :: Epsilon a => Plucker a -> Bool #

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 -> a infixl 5 #

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 a #

Given a pair of points represented by homogeneous coordinates generate Plücker coordinates for the line through them, directed from the second towards the first.

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

Given a pair of 3D points, generate Plücker coordinates for the line through them, directed from the second towards the first.

# Operations on lines

parallel :: Epsilon a => Plucker a -> Plucker a -> Bool #

Checks if two lines are parallel.

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

Checks if two lines intersect (or nearly intersect).

data LinePass #

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

 # Methods # MethodsshowList :: [LinePass] -> ShowS # # Associated Typestype Rep LinePass :: * -> * # Methodsto :: Rep LinePass x -> LinePass # type Rep LinePass # type Rep LinePass = D1 (MetaData "LinePass" "Linear.Plucker" "linear-1.20.7-LM9jZhdWZ2yIxbtdhUjC67" False) ((:+:) (C1 (MetaCons "Coplanar" PrefixI False) U1) ((:+:) (C1 (MetaCons "Clockwise" PrefixI False) U1) (C1 (MetaCons "Counterclockwise" PrefixI False) U1)))

passes :: (Epsilon a, Ord a) => Plucker a -> Plucker a -> LinePass #

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

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

The minimum squared distance of a line from the origin.

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

The point where a line is closest to the origin.

isLine :: Epsilon a => Plucker a -> Bool #

Not all 6-dimensional points correspond to a line in 3D. This predicate tests that a Plücker coordinate lies on the Grassmann manifold, and does indeed represent a 3D line.

coincides :: (Epsilon a, Fractional a) => Plucker a -> Plucker a -> Bool #

Checks if two lines coincide in space. In other words, undirected equality.

coincides' :: (Epsilon a, Fractional a, Ord a) => Plucker a -> Plucker a -> Bool #

Checks if two lines coincide in space, and have the same orientation.

# Basis elements

p01 :: Lens' (Plucker a) a #

These elements form a basis for the Plücker space, or the Grassmanian manifold Gr(2,V4).

p01 :: Lens' (Plucker a) a
p02 :: Lens' (Plucker a) a
p03 :: Lens' (Plucker a) a
p23 :: Lens' (Plucker a) a
p31 :: Lens' (Plucker a) a
p12 :: Lens' (Plucker a) a


p02 :: Lens' (Plucker a) a #

These elements form a basis for the Plücker space, or the Grassmanian manifold Gr(2,V4).

p01 :: Lens' (Plucker a) a
p02 :: Lens' (Plucker a) a
p03 :: Lens' (Plucker a) a
p23 :: Lens' (Plucker a) a
p31 :: Lens' (Plucker a) a
p12 :: Lens' (Plucker a) a


p03 :: Lens' (Plucker a) a #

These elements form a basis for the Plücker space, or the Grassmanian manifold Gr(2,V4).

p01 :: Lens' (Plucker a) a
p02 :: Lens' (Plucker a) a
p03 :: Lens' (Plucker a) a
p23 :: Lens' (Plucker a) a
p31 :: Lens' (Plucker a) a
p12 :: Lens' (Plucker a) a


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

These elements form an alternate basis for the Plücker space, or the Grassmanian manifold Gr(2,V4).

p10 :: Num a => Lens' (Plucker a) a
p20 :: Num a => Lens' (Plucker a) a
p30 :: Num a => Lens' (Plucker a) a
p32 :: Num a => Lens' (Plucker a) a
p13 :: Num a => Lens' (Plucker a) a
p21 :: Num a => Lens' (Plucker a) a


p12 :: Lens' (Plucker a) a #

These elements form a basis for the Plücker space, or the Grassmanian manifold Gr(2,V4).

p01 :: Lens' (Plucker a) a
p02 :: Lens' (Plucker a) a
p03 :: Lens' (Plucker a) a
p23 :: Lens' (Plucker a) a
p31 :: Lens' (Plucker a) a
p12 :: Lens' (Plucker a) a


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

These elements form an alternate basis for the Plücker space, or the Grassmanian manifold Gr(2,V4).

p10 :: Num a => Lens' (Plucker a) a
p20 :: Num a => Lens' (Plucker a) a
p30 :: Num a => Lens' (Plucker a) a
p32 :: Num a => Lens' (Plucker a) a
p13 :: Num a => Lens' (Plucker a) a
p21 :: Num a => Lens' (Plucker a) a


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

These elements form an alternate basis for the Plücker space, or the Grassmanian manifold Gr(2,V4).

p10 :: Num a => Lens' (Plucker a) a
p20 :: Num a => Lens' (Plucker a) a
p30 :: Num a => Lens' (Plucker a) a
p32 :: Num a => Lens' (Plucker a) a
p13 :: Num a => Lens' (Plucker a) a
p21 :: Num a => Lens' (Plucker a) a


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

These elements form an alternate basis for the Plücker space, or the Grassmanian manifold Gr(2,V4).

p10 :: Num a => Lens' (Plucker a) a
p20 :: Num a => Lens' (Plucker a) a
p30 :: Num a => Lens' (Plucker a) a
p32 :: Num a => Lens' (Plucker a) a
p13 :: Num a => Lens' (Plucker a) a
p21 :: Num a => Lens' (Plucker a) a


p23 :: Lens' (Plucker a) a #

These elements form a basis for the Plücker space, or the Grassmanian manifold Gr(2,V4).

p01 :: Lens' (Plucker a) a
p02 :: Lens' (Plucker a) a
p03 :: Lens' (Plucker a) a
p23 :: Lens' (Plucker a) a
p31 :: Lens' (Plucker a) a
p12 :: Lens' (Plucker a) a


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

These elements form an alternate basis for the Plücker space, or the Grassmanian manifold Gr(2,V4).

p10 :: Num a => Lens' (Plucker a) a
p20 :: Num a => Lens' (Plucker a) a
p30 :: Num a => Lens' (Plucker a) a
p32 :: Num a => Lens' (Plucker a) a
p13 :: Num a => Lens' (Plucker a) a
p21 :: Num a => Lens' (Plucker a) a


p31 :: Lens' (Plucker a) a #

These elements form a basis for the Plücker space, or the Grassmanian manifold Gr(2,V4).

p01 :: Lens' (Plucker a) a
p02 :: Lens' (Plucker a) a
p03 :: Lens' (Plucker a) a
p23 :: Lens' (Plucker a) a
p31 :: Lens' (Plucker a) a
p12 :: Lens' (Plucker a) a


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

These elements form an alternate basis for the Plücker space, or the Grassmanian manifold Gr(2,V4).

p10 :: Num a => Lens' (Plucker a) a
p20 :: Num a => Lens' (Plucker a) a
p30 :: Num a => Lens' (Plucker a) a
p32 :: Num a => Lens' (Plucker a) a
p13 :: Num a => Lens' (Plucker a) a
p21 :: Num a => Lens' (Plucker a) a