53#ifndef LASS_GUARDIAN_OF_INCLUSION_PRIM_LINE_3D_H
54#define LASS_GUARDIAN_OF_INCLUSION_PRIM_LINE_3D_H
77 typedef Line3D<T, NormalizingPolicy> TSelf;
78 typedef NormalizingPolicy TNormalizingPolicy;
81 typedef typename TPoint::TVector TVector;
83 typedef typename TPoint::TValue TValue;
84 typedef typename TPoint::TParam TParam;
85 typedef typename TPoint::TReference TReference;
86 typedef typename TPoint::TConstReference TConstReference;
87 typedef typename TPoint::TNumTraits TNumTraits;
89 enum { dimension = TPoint::dimension };
96 typedef Line3D<U, NormalizingPolicy> Type;
100 Line3D(
const TPoint& iSupport,
const TPoint& iPoint);
101 Line3D(
const TPoint& iSupport,
const TVector& iDirection);
103 const TPoint& support()
const;
109 const TVector
reject(
const TPoint& iPoint)
const;
110 const TVector
reject(
const TVector& iVector)
const;
111 const TPoint
project(
const TPoint& iPoint)
const;
112 const TVector
project(
const TVector& iVector)
const;
113 const TPoint
reflect(
const TPoint& iPoint)
const;
114 const TVector
reflect(
const TVector& iVector)
const;
116 const TPoint
point(TParam iT)
const;
117 const TValue
t(
const TPoint& iPoint)
const;
130template<
typename T,
class NP>
131std::ostream& operator<<(std::ostream& oOStream,
const Line3D<T, NP>& iB);
133template<
typename T,
class NP>
Output stream for writing a selection of geometric primitives to XML files.
const TPoint reflect(const TPoint &iPoint) const
reflect a point orthogonally into the line.
const TVector project(const TVector &iVector) const
project a vector orthogonally onto the line
const TPoint point(TParam iT) const
Return point on line by it's parameter.
const TVector & direction() const
Return direction of line.
const TValue t(const TPoint &iPoint) const
Return parameter of point on the line that is the projection of the given point.
const TVector reflect(const TVector &iVector) const
reflect a vector orthogonally to the line
void lookAt(const TPoint &iLookAt)
Set direction from support to look-at point.
void setDirection(const TVector &iDirection)
Set direction and normalize it if that's the policy.
const TPoint project(const TPoint &iPoint) const
project a point orthogonally onto the line
const TVector reject(const TPoint &iPoint) const
return the vector that, if added to the projection of iPoint, you get iPoint again.
bool isValid() const
Return true if line is valid (direction isn't a zero vector).
const TVector reject(const TVector &iVector) const
return the part of iVector that is orthogonal to the line.
#define LASS_SIMD_ALIGN
if LASS_SIMD_ALIGNMENT is set, use LASS_SIMD_ALIGN to align some structures on SIMD alignment boundar...
set of geometrical primitives
Library for Assembled Shared Sources.
rebind to other value type
Policy to auto-normalize normals.