library of assembled shared sources

http://lass.cocamware.com

lass::prim::impl::Line2DCombined< T, NormalizingPolicy > Class Template Reference

implementation of 2d line with both cartesian and parametric equation. More...

#include <line_2d_combined.h>

Collaboration diagram for lass::prim::impl::Line2DCombined< T, NormalizingPolicy >:

Collaboration graph
[legend]

Public Types

enum  { dimension = TPoint::dimension }
typedef NormalizingPolicy TNormalizingPolicy
typedef Point2D< T > TPoint
typedef TPoint::TVector TVector
typedef TPoint::TValue TValue
typedef TPoint::TParam TParam
typedef TPoint::TReference TReference
typedef TPoint::TConstReference TConstReference
typedef TPoint::TNumTraits TNumTraits

Public Member Functions

 Line2DCombined ()
 initializes to an invalid state.
 Line2DCombined (const TPoint &iSupport, const TPoint &iPoint)
 Construct a line through three points.
 Line2DCombined (const TPoint &iSupport, const TVector &iDir)
 construct a line through a support point and by two direction vectors.
 Line2DCombined (const TVector &iNormal, const TPoint &iSupport)
 Construct a line through a support point and by a normal vector.
 Line2DCombined (const TVector &iNormal, TParam iD)
 Construct a line by a cartesian equation N.P + d == 0.
const TPointsupport () const
 return support point.
const TVectordirection () const
 return direction vector.
void getCartesian (TVector &oNormal, TReference oD) const
const TVectornormal () const
const TParam d () const
const TValue equation (const TPoint &iPoint) const
 Return value of point in equation.
const TValue equation (const TPoint &iPoint, TParam iRelativeTolerance) const
 Return value of point in equation.
const TVector reject (const TPoint &iPoint) const
 return the vector that, if added to the PROJECTION of iPoint, you get iPoint again.
const TVector reject (const TVector &iVector) const
 return the part of iVector that is orthogonal to the line.
const TPoint project (const TPoint &iPoint) const
 project a point orthogonally onto the line
const TVector project (const TVector &iVector) const
 project a vector orthogonally onto the line
const TPoint reflect (const TPoint &iPoint) const
 reflect a point orthogonally into the line.
const TVector reflect (const TVector &iVector) const
 reflect a vector orthogonally into the line
const TPoint point (TParam iT) const
 return point by filling in the parametric equation: P(t) = S + t * U
const TValue t (const TPoint &iPoint) const
 return UV pair of parameters
void flip ()
const bool isValid () const
 return true if line is a valid line (no normal or direction vectors that are zero).

Private Attributes

TPoint support_
TVector direction_
TVector normal_
TValue d_

Detailed Description

template<typename T, class NormalizingPolicy = Normalized>
class lass::prim::impl::Line2DCombined< T, NormalizingPolicy >

implementation of 2d line with both cartesian and parametric equation.

Author:
Bram de Greve [BdG]

Definition at line 65 of file line_2d_combined.h.


Member Typedef Documentation

template<typename T , class NormalizingPolicy = Normalized>
typedef NormalizingPolicy lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::TNormalizingPolicy

Definition at line 69 of file line_2d_combined.h.

template<typename T , class NormalizingPolicy = Normalized>
typedef Point2D<T> lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::TPoint

Definition at line 71 of file line_2d_combined.h.

template<typename T , class NormalizingPolicy = Normalized>
typedef TPoint::TVector lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::TVector

Definition at line 72 of file line_2d_combined.h.

template<typename T , class NormalizingPolicy = Normalized>
typedef TPoint::TValue lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::TValue

Definition at line 74 of file line_2d_combined.h.

template<typename T , class NormalizingPolicy = Normalized>
typedef TPoint::TParam lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::TParam

Definition at line 75 of file line_2d_combined.h.

template<typename T , class NormalizingPolicy = Normalized>
typedef TPoint::TReference lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::TReference

Definition at line 76 of file line_2d_combined.h.

template<typename T , class NormalizingPolicy = Normalized>
typedef TPoint::TConstReference lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::TConstReference

Definition at line 77 of file line_2d_combined.h.

template<typename T , class NormalizingPolicy = Normalized>
typedef TPoint::TNumTraits lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::TNumTraits

Definition at line 78 of file line_2d_combined.h.


Member Enumeration Documentation

template<typename T , class NormalizingPolicy = Normalized>
anonymous enum

Enumerator:
dimension 

Definition at line 80 of file line_2d_combined.h.


Constructor & Destructor Documentation

template<typename T , class NP >
lass::prim::impl::Line2DCombined< T, NP >::Line2DCombined (  )  [inline]

initializes to an invalid state.

Definition at line 63 of file line_2d_combined.inl.

References lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::isValid(), and LASS_ASSERT.

template<typename T , class NP >
lass::prim::impl::Line2DCombined< T, NP >::Line2DCombined ( const TPoint iSupport,
const TPoint iPoint 
) [inline]

Construct a line through three points.

  • support point S is given by the first point iSupport.
  • direction vector U is choosen from iSupport to iPointU and iPointV respectively (U = iPoint - iSupport).
  • normal vector N is given by the perp of U.
  • value d is choosen so that the support point is indeed a point of the line.

Definition at line 82 of file line_2d_combined.inl.

References lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::d_, lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::direction_, lass::prim::dot(), lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::normal_, lass::prim::Vector2D< T >::perp(), and lass::prim::Point2D< T >::position().

template<typename T , class NP >
lass::prim::impl::Line2DCombined< T, NP >::Line2DCombined ( const TPoint iSupport,
const TVector iDirection 
) [inline]

construct a line through a support point and by two direction vectors.

  • support point S is given by the point iSupport.
  • direction vector U is given by iDirection.
  • normal vector N is given by the perp of N.
  • value d is choosen so that the support point is indeed a point of the line.

Definition at line 100 of file line_2d_combined.inl.

References lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::d_, lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::direction_, lass::prim::dot(), lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::normal_, lass::prim::Vector2D< T >::perp(), and lass::prim::Point2D< T >::position().

template<typename T , class NP >
lass::prim::impl::Line2DCombined< T, NP >::Line2DCombined ( const TVector iNormal,
const TPoint iSupport 
) [inline]

Construct a line through a support point and by a normal vector.

  • support point S is given by the point iSupport.
  • normal vector N is given by the vector iNormal.
  • direction vector U is automatically generated so that N is perp of U.
  • value d is choosen so that the support point is indeed a point of the line.

Definition at line 118 of file line_2d_combined.inl.

References lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::d_, lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::direction_, lass::prim::dot(), lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::normal_, lass::prim::Vector2D< T >::perp(), and lass::prim::Point2D< T >::position().

template<typename T , class NP >
lass::prim::impl::Line2DCombined< T, NP >::Line2DCombined ( const TVector iNormal,
TParam  iD 
) [inline]

Construct a line by a cartesian equation N.P + d == 0.

  • normal vector N is given by the vector iNormal.
  • value d is given by the value iD.
  • support point S automatically generated so that N.S + d == 0.
  • direction vector U is automatically generated so that N is perp of U.

Definition at line 136 of file line_2d_combined.inl.

References lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::d_, lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::direction_, lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::normal_, and lass::prim::Vector2D< T >::perp().


Member Function Documentation

template<typename T , class NP >
const Line2DCombined< T, NP >::TPoint & lass::prim::impl::Line2DCombined< T, NP >::support (  )  const [inline]

return support point.

Definition at line 150 of file line_2d_combined.inl.

References lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::support_.

template<typename T , class NP >
const Line2DCombined< T, NP >::TVector & lass::prim::impl::Line2DCombined< T, NP >::direction (  )  const [inline]

return direction vector.

Definition at line 160 of file line_2d_combined.inl.

References lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::direction_.

template<typename T , class NP >
void lass::prim::impl::Line2DCombined< T, NP >::getCartesian ( TVector oNormal,
TReference  oD 
) const [inline]

template<typename T , class NP >
const Line2DCombined< T, NP >::TVector & lass::prim::impl::Line2DCombined< T, NP >::normal (  )  const [inline]

template<typename T , class NP >
const Line2DCombined< T, NP >::TParam lass::prim::impl::Line2DCombined< T, NP >::d (  )  const [inline]

template<typename T , class NP >
const Line2DCombined< T, NP >::TValue lass::prim::impl::Line2DCombined< T, NP >::equation ( const TPoint iPoint  )  const [inline]

template<typename T , class NP >
const Line2DCombined< T, NP >::TValue lass::prim::impl::Line2DCombined< T, NP >::equation ( const TPoint iPoint,
TParam  iRelativeTolerance 
) const [inline]

template<typename T , class NP >
const Line2DCombined< T, NP >::TVector lass::prim::impl::Line2DCombined< T, NP >::reject ( const TPoint iPoint  )  const [inline]

return the vector that, if added to the PROJECTION of iPoint, you get iPoint again.

iPoint == (almost) project(iPoint) + reject(iPoint)

Definition at line 220 of file line_2d_combined.inl.

References lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::equation(), and lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::normal_.

Referenced by lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::project(), and lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::reflect().

template<typename T , class NP >
const Line2DCombined< T, NP >::TVector lass::prim::impl::Line2DCombined< T, NP >::reject ( const TVector iVector  )  const [inline]

return the part of iVector that is orthogonal to the line.

it's the vector that, if added to the PROJECTION of iVector, you get iVector again. iVector == (almost) project(iVector) + reject(iVector).

Definition at line 233 of file line_2d_combined.inl.

References lass::prim::dot(), and lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::normal_.

template<typename T , class NP >
const Line2DCombined< T, NP >::TPoint lass::prim::impl::Line2DCombined< T, NP >::project ( const TPoint iPoint  )  const [inline]

project a point orthogonally onto the line

Definition at line 244 of file line_2d_combined.inl.

References lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::reject().

template<typename T , class NP >
const Line2DCombined< T, NP >::TVector lass::prim::impl::Line2DCombined< T, NP >::project ( const TVector iVector  )  const [inline]

project a vector orthogonally onto the line

Definition at line 255 of file line_2d_combined.inl.

References lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::reject().

template<typename T , class NP >
const Line2DCombined< T, NP >::TPoint lass::prim::impl::Line2DCombined< T, NP >::reflect ( const TPoint iPoint  )  const [inline]

reflect a point orthogonally into the line.

Definition at line 266 of file line_2d_combined.inl.

References lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::support_.

template<typename T , class NP >
const Line2DCombined< T, NP >::TVector lass::prim::impl::Line2DCombined< T, NP >::reflect ( const TVector iVector  )  const [inline]

reflect a vector orthogonally into the line

Definition at line 277 of file line_2d_combined.inl.

References lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::reject(), and lass::stde::T.

template<typename T , class NP >
const Line2DCombined< T, NP >::TPoint lass::prim::impl::Line2DCombined< T, NP >::point ( TParam  iT  )  const [inline]

return point by filling in the parametric equation: P(t) = S + t * U

Definition at line 288 of file line_2d_combined.inl.

References lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::direction_, and lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::support_.

template<typename T , class NP >
const Line2DCombined< T, NP >::TValue lass::prim::impl::Line2DCombined< T, NP >::t ( const TPoint iPoint  )  const [inline]

template<typename T , class NP >
void lass::prim::impl::Line2DCombined< T, NP >::flip (  )  [inline]

template<typename T , class NP >
const bool lass::prim::impl::Line2DCombined< T, NP >::isValid (  )  const [inline]


Field Documentation

template<typename T , class NormalizingPolicy = Normalized>
TPoint lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::support_ [private]

template<typename T , class NormalizingPolicy = Normalized>
TVector lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::direction_ [private]

template<typename T , class NormalizingPolicy = Normalized>
TVector lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::normal_ [private]

template<typename T , class NormalizingPolicy = Normalized>
TValue lass::prim::impl::Line2DCombined< T, NormalizingPolicy >::d_ [private]


The documentation for this class was generated from the following files:

Generated on Mon Nov 10 14:22:14 2008 for Library of Assembled Shared Sources by doxygen 1.5.7.1
SourceForge.net Logo