HORIZON HASKELLDocslts/ghc-9.10.xc74966e2026-09-27Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · c74966e · 2026-09-27

Modulelinear-1.22Haskell2010

Linear.Plucker

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

  • 2 types
  • 31 values
  • Packagelinear-1.22
  • Exports33
  • LanguageHaskell2010
  • LicenceBSD-3-Clause
  • SourcePlucker.hs
datadata Plucker a
#

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

Constructors

Instances67Monad, Functor, MonadFix, Applicative, Foldable, Traversable, …
valueisotropic :: Epsilon a => Plucker a -> Bool
#

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

value(><) :: Num a => Plucker a -> Plucker a -> a
#

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

valueplucker :: 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.

valueplucker3D :: 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

9 declarations
datadata 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).

Instances4Eq, Show, Generic, Rep
valueisLine :: 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.

Basis elements

18 declarations