7 #ifndef CAFU_MATH_PLUECKER_HPP_INCLUDED
8 #define CAFU_MATH_PLUECKER_HPP_INCLUDED
10 #include "Vector3.hpp"
29 p[0]=p[1]=p[2]=p[3]=p[4]=p[5]=0;
33 PlueckerT(
const T p0,
const T p1,
const T p2,
const T p3,
const T p4,
const T p5)
58 A.
x*Dir.
z - Dir.
x*A.
z,
60 A.
y*Dir.
z - Dir.
y*A.
z,
67 T&
operator [] (
unsigned long i) { assert(i<6);
return p[i]; }
70 const T&
operator [] (
unsigned long i)
const { assert(i<6);
return p[i]; }
75 return p[0]*Other.
p[4] + p[1]*Other.
p[5] + p[2]*Other.
p[3] + p[4]*Other.
p[0] + p[5]*Other.
p[1] + p[3]*Other.
p[2];
static PlueckerT CreateFromRay(const Vector3T< T > &A, const Vector3T< T > &Dir)
Creates a Pluecker coordinate from the ray that starts at (or "passes through") point A into directio...
Definition: Pluecker.hpp:55
This class represents Pluecker coordinates.
Definition: Pluecker.hpp:22
PlueckerT()
The default constructor.
Definition: Pluecker.hpp:27
T y
The y-component of this vector.
Definition: Vector3.hpp:41
This class represents a polymorphic 3-dimensional vector.
Definition: Misc.hpp:11
T p[6]
The six components of the Pluecker coordinate.
Definition: Pluecker.hpp:85
T & operator[](unsigned long i)
Returns the i-th component of this Pluecker coordinate.
Definition: Pluecker.hpp:67
T operator*(const PlueckerT &Other) const
This operator computes the permuted inner product (as described in Tellers dissertation) of the two P...
Definition: Pluecker.hpp:73
static PlueckerT CreateFromLine(const Vector3T< T > &A, const Vector3T< T > &B)
Creates a Pluecker coordinate from the line (segment) that starts at point A and ends at point B...
Definition: Pluecker.hpp:44
T z
The z-component of this vector.
Definition: Vector3.hpp:42
PlueckerT(const T p0, const T p1, const T p2, const T p3, const T p4, const T p5)
Constructor for creating a Pluecker coordinate from individual components.
Definition: Pluecker.hpp:33
T x
The x-component of this vector.
Definition: Vector3.hpp:40