59#ifndef LASS_GUARDIAN_OF_INCLUSION_PRIM_IMPL_PLANE_3D_PARAMETRIC_H
60#define LASS_GUARDIAN_OF_INCLUSION_PRIM_IMPL_PLANE_3D_PARAMETRIC_H
71template <
typename T,
class NormalizingPolicy = Normalized>
76 typedef NormalizingPolicy TNormalizingPolicy;
79 typedef typename TPoint::TVector TVector;
80 typedef Point2D<T> TUV;
82 typedef typename TPoint::TValue TValue;
83 typedef typename TPoint::TParam TParam;
84 typedef typename TPoint::TReference TReference;
85 typedef typename TPoint::TConstReference TConstReference;
86 typedef typename TPoint::TNumTraits TNumTraits;
88 enum { dimension = TPoint::dimension };
92 Plane3DParametric(
const TPoint& iSupport,
const TVector& iDirectionU,
const TVector& iDirectionV);
105 void getCartesian(TVector& oNormal, TReference oD)
const;
106 const TVector normal()
const;
107 const TValue d()
const;
110 const TValue
equation(
const TPoint& iPoint, TParam iRelativeTolerance)
const;
112 const TVector
reject(
const TPoint& iPoint)
const;
113 const TVector
reject(
const TVector& iVector)
const;
114 const TPoint
project(
const TPoint& iPoint)
const;
115 const TVector
project(
const TVector& iVector)
const;
116 const TPoint
reflect(
const TPoint& iPoint)
const;
117 const TVector
reflect(
const TVector& iVector)
const;
119 const TPoint
point(TParam iU, TParam iV)
const;
120 const TPoint
point(
const TUV& iUV)
const;
121 const TUV
uv(
const TPoint& iPoint)
const;
const TPoint point(TParam iU, TParam iV) const
return point by filling in the parametric equation: P(u, v) = S + u * U + v * V
void getDirections(TVector &oDirectionU, TVector &oDirectionV) const
return U and V direction vectors
const TPoint point(const TUV &iUV) const
return point by filling in the parametric equation: P(u, v) = S + u * U + v * V
void getReciprocals(TVector &oReciprocalU, TVector &oReciprocalV) const
return reciprocal vectors for U and V direction vectors
const TPoint project(const TPoint &iPoint) const
project a point orthogonally onto the plane
const TVector reciprocalU() const
return reciprocal for U direction vector.
const TVector reject(const TVector &iVector) const
return the part of iVector that is orthogonal to the plane.
const TPoint reflect(const TPoint &iPoint) const
reflect a point orthogonally into the plane.
Plane3DParametric(const TVector &iNormal, const TPoint &iSupport)
Construct a plane through a support point and by a normal vector.
const TUV uv(const TPoint &iPoint) const
return UV pair of parameters
const TValue equation(const TPoint &iPoint) const
Return value of point in equation.
const TVector project(const TVector &iVector) const
project a vector orthogonally onto the plane
const TVector & directionU() const
return U direction vector.
Plane3DParametric(const TPoint &iSupport, const TPoint &iPointU, const TPoint &iPointV)
Construct a plane through three points.
const TPoint & support() const
return support point.
Plane3DParametric(const TVector &iNormal, TParam iD)
Construct a plane by a cartesian equation N.P + d == 0.
const TVector & directionV() const
return V direction vector.
Plane3DParametric()
initializes to an invalid state.
const TVector reflect(const TVector &iVector) const
reflect a vector orthogonally into the plane
const TVector reciprocalV() const
return reciprocal for V direction vector.
bool isValid() const
return true if plane is a valid plane (no direction vector is zero and they're not colinear.
Plane3DParametric(const TPoint &iSupport, const TVector &iDirectionU, const TVector &iDirectionV)
construct a plane through a support point and by two direction vectors.
const TVector reject(const TPoint &iPoint) const
return the vector that, if added to the PROJECTION of iPoint, you get iPoint again.
const TValue equation(const TPoint &iPoint, TParam iRelativeTolerance) const
Return value of point in equation.
#define LASS_SIMD_ALIGN
if LASS_SIMD_ALIGNMENT is set, use LASS_SIMD_ALIGN to align some structures on SIMD alignment boundar...
implementation details of lass::prim
set of geometrical primitives
Library for Assembled Shared Sources.