Copyright | 2014 Edward Kmett Charles Durham 2015 Trevor L. McDonell |
---|---|
License | BSD-style (see the file LICENSE) |
Maintainer | Edward Kmett <ekmett@gmail.com> |
Stability | experimental |
Portability | non-portable |
Safe Haskell | None |
Language | Haskell2010 |
Plücker coordinates for lines in 3d homogeneous space.
- data Plucker a :: * -> * = Plucker ~a ~a ~a ~a ~a ~a
- squaredError :: forall a. Num a => Exp (Plucker a) -> Exp a
- (><) :: forall a. Num a => Exp (Plucker a) -> Exp (Plucker a) -> Exp a
- plucker :: forall a. Num a => Exp (V4 a) -> Exp (V4 a) -> Exp (Plucker a)
- plucker3D :: forall a. Num a => Exp (V3 a) -> Exp (V3 a) -> Exp (Plucker a)
Documentation
Plücker coordinates for lines in a 3-dimensional space.
Plucker ~a ~a ~a ~a ~a ~a |
squaredError :: forall a. Num a => Exp (Plucker a) -> Exp a Source #
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
.
(><) :: forall a. Num a => Exp (Plucker a) -> Exp (Plucker a) -> Exp a infixl 5 Source #
This isn't the actual metric because this bilinear form gives rise to an isotropic quadratic space
plucker :: forall a. Num a => Exp (V4 a) -> Exp (V4 a) -> Exp (Plucker a) Source #
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 :: forall a. Num a => Exp (V3 a) -> Exp (V3 a) -> Exp (Plucker a) Source #
Given a pair of 3D points, generate Plücker coordinates for the line through them, directed from the second towards the first.
Orphan instances
Additive Plucker Source # | |
Metric Plucker Source # | |
cst a => IsProduct cst (Plucker a) Source # | |
(Lift Exp a, Elt (Plain a)) => Lift Exp (Plucker a) Source # | |
Elt a => Unlift Exp (Plucker (Exp a)) Source # | |
Elt a => Elt (Plucker a) Source # | |
(Elt a, Elt b) => Each (Exp (Plucker a)) (Exp (Plucker b)) (Exp a) (Exp b) Source # | |