53#ifndef LASS_GUARDIAN_OF_INCLUSION_PRIM_RAY_3D_H
54#define LASS_GUARDIAN_OF_INCLUSION_PRIM_RAY_3D_H
82 typedef Ray3D<T, NormalizingPolicy, ParameterPolicy> TSelf;
83 typedef NormalizingPolicy TNormalizingPolicy;
84 typedef ParameterPolicy TParameterPolicy;
87 typedef typename TPoint::TVector TVector;
89 typedef typename TPoint::TValue TValue;
90 typedef typename TPoint::TParam TParam;
91 typedef typename TPoint::TReference TReference;
92 typedef typename TPoint::TConstReference TConstReference;
93 typedef typename TPoint::TNumTraits TNumTraits;
95 enum { dimension = TPoint::dimension };
97 template <
typename U>
struct Rebind
99 typedef Ray3D<U, NormalizingPolicy, ParameterPolicy> Type;
105 Ray3D(
const TPoint& iSupport,
const TVector& iDirection);
107 Ray3D(
const TPoint& iSupport,
const TPoint& iLookAt);
108 template <
typename NP2,
typename PP2> Ray3D(
const Ray3D<T, NP2, PP2>& iOther);
119 const TPoint
point(TParam a_t)
const;
120 const TValue
t(
const TPoint& iPoint)
const;
122 const TVector
project(
const TVector& iVector)
const;
123 const TVector
reject(
const TVector& iVector)
const;
124 const TVector
reflect(
const TVector& iVector)
const;
125 const TPoint
project(
const TPoint& iPoint)
const;
126 const TVector
reject(
const TPoint& iPoint)
const;
127 const TPoint
reflect(
const TPoint& iPoint)
const;
139template<
typename T,
class NP,
class PP>
140std::ostream& operator<<(std::ostream& oOStream,
const Ray3D<T, NP, PP>& iB);
142template<
typename T,
class NP,
class PP>
153#ifdef LASS_GUARDIAN_OF_INCLUSION_PRIM_AABB_3D_H
157#ifdef LASS_GUARDIAN_OF_INCLUSION_PRIM_DISK_3D_H
161#ifdef LASS_GUARDIAN_OF_INCLUSION_PRIM_PARALLELOGRAM_3D_H
165#ifdef LASS_GUARDIAN_OF_INCLUSION_PRIM_PLANE_3D_H
169#ifdef LASS_GUARDIAN_OF_INCLUSION_PRIM_SIMPLE_POLYGON_3D_H
173#ifdef LASS_GUARDIAN_OF_INCLUSION_PRIM_SPHERE_3D_H
177#ifdef LASS_GUARDIAN_OF_INCLUSION_PRIM_TRANSFORMATION_3D_H
181#ifdef LASS_GUARDIAN_OF_INCLUSION_PRIM_TRIANGLE_3D_H
185#ifdef LASS_GUARDIAN_OF_INCLUSION_PRIM_LINE_SEGMENT_3D_H
Output stream for writing a selection of geometric primitives to XML files.
TPoint & support()
access origin of ray the origin is also the support point of the ray.
const TVector & direction() const
Return direction of ray.
void setDirection(const TVector &iDirection)
Set direction and normalize it if that's the policy.
const TPoint & support() const
return origin of ray.
void lookAt(const TPoint &iLookAt)
Set direction from origin to look-at point.
const TPoint project(const TPoint &iPoint) const
Project point on the axis of the ray.
const TVector reject(const TVector &iVector) const
Reject vector against the axis of the ray.
bool isValid() const
Return true if ray is valid (direction isn't a zero vector).
const TPoint reflect(const TPoint &iPoint) const
Reject point against the axis of the ray.
const TVector reflect(const TVector &iVector) const
Reflect vector against the axis of the ray.
const TValue t(const TPoint &iPoint) const
Return parameter of point on the ray that is the projection of the given point.
const TVector reject(const TPoint &iPoint) const
Reject point against the axis of the ray.
const TPoint point(TParam a_t) const
Return point on ray by it's parameter.
const TVector project(const TVector &iVector) const
Project vector on the axis of the ray.
#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.
Parameters supplied to functions must be in the range of the primitive.
Policy to auto-normalize normals.