54#ifndef LASS_GUARDIAN_OF_INCLUSION_PRIM_IMPL_PLANE_3D_COMBINED_H
55#define LASS_GUARDIAN_OF_INCLUSION_PRIM_IMPL_PLANE_3D_COMBINED_H
66template <
typename T,
class NormalizingPolicy = Normalized>
71 typedef NormalizingPolicy TNormalizingPolicy;
74 typedef typename TPoint::TVector TVector;
75 typedef Point2D<T> TUV;
77 typedef typename TPoint::TValue TValue;
78 typedef typename TPoint::TParam TParam;
79 typedef typename TPoint::TReference TReference;
80 typedef typename TPoint::TConstReference TConstReference;
81 typedef typename TPoint::TNumTraits TNumTraits;
83 enum { dimension = TPoint::dimension };
86 Plane3DCombined(
const TPoint& iSupport,
const TPoint& iPointU,
const TPoint& iPointV);
87 Plane3DCombined(
const TPoint& iSupport,
const TVector& iDirectionU,
const TVector& iDirectionV);
100 void getCartesian(TVector& oNormal, TReference oD)
const;
101 const TVector& normal()
const;
102 const TParam d()
const;
105 const TValue
equation(
const TPoint& iPoint, TParam iRelativeTolerance)
const;
107 const TVector
reject(
const TPoint& iPoint)
const;
108 const TVector
reject(
const TVector& iVector)
const;
109 const TPoint
project(
const TPoint& iPoint)
const;
110 const TVector
project(
const TVector& iVector)
const;
111 const TPoint
reflect(
const TPoint& iPoint)
const;
112 const TVector
reflect(
const TVector& iVector)
const;
114 const TPoint
point(TParam iU, TParam iV)
const;
115 const TPoint
point(
const TUV& iUV)
const;
116 const TUV
uv(
const TPoint& iPoint)
const;
126 TVector reciprocalU_;
127 TVector reciprocalV_;
void getDirections(TVector &oDirectionU, TVector &oDirectionV) const
return U and V direction vectors
const TVector reject(const TVector &iVector) const
return the part of iVector that is orthogonal to the plane.
const TPoint point(TParam iU, TParam iV) const
return point by filling in the parametric equation: P(u, v) = S + u * U + v * V
const TVector reject(const TPoint &iPoint) const
return the vector that, if added to the PROJECTION of iPoint, you get iPoint again.
const TVector & directionV() const
return V direction vector.
const TVector project(const TVector &iVector) const
project a vector orthogonally onto the plane
const TVector & directionU() const
return U direction vector.
const TVector reflect(const TVector &iVector) const
reflect a vector orthogonally into the plane
const TValue equation(const TPoint &iPoint) const
Return value of point in equation.
const TPoint project(const TPoint &iPoint) const
project a point orthogonally onto the plane
const TVector & reciprocalU() const
return reciprocal for U direction vector.
Plane3DCombined(const TVector &iNormal, const TPoint &iSupport)
Construct a plane through a support point and by a normal vector.
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
Plane3DCombined(const TPoint &iSupport, const TPoint &iPointU, const TPoint &iPointV)
Construct a plane through three points.
Plane3DCombined()
initializes to an invalid state.
const TPoint & support() const
return support point.
Plane3DCombined(const TPoint &iSupport, const TVector &iDirectionU, const TVector &iDirectionV)
construct a plane through a support point and by two direction vectors.
bool isValid() const
return true if plane is a valid plane (no normal or direction vectors that are zero).
const TUV uv(const TPoint &iPoint) const
return UV pair of parameters
Plane3DCombined(const TVector &iNormal, TParam iD)
Construct a plane by a cartesian equation N.P + d == 0.
const TPoint reflect(const TPoint &iPoint) const
reflect a point orthogonally into the plane.
const TValue equation(const TPoint &iPoint, TParam iRelativeTolerance) const
Return value of point in equation.
const TVector & reciprocalV() const
return reciprocal for V direction vector.
implementation details of lass::prim
set of geometrical primitives
Library for Assembled Shared Sources.