library of assembled shared sources

http://lass.cocamware.com

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

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

#include <line_2d_cartesian.h>

Inheritance diagram for lass::prim::impl::Line2DCartesian< T, NormalizingPolicy >:

Inheritance graph
[legend]
Collaboration diagram for lass::prim::impl::Line2DCartesian< 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

 Line2DCartesian ()
 initializes to an invalid state.
 Line2DCartesian (const TPoint &iSupport, const TPoint &iPoint)
 Construct a line through three points.
 Line2DCartesian (const TPoint &iSupport, const TVector &iDirection)
 construct a line through a support point and by two direction vectors.
 Line2DCartesian (const TVector &iNormal, const TPoint &iSupport)
 Construct a line through a support point and by a normal vector.
 Line2DCartesian (const TVector &iNormal, TParam iD)
 Construct a line by a cartesian equation N.P + d == 0.
const TPoint support () const
 return generated support point.
const TVector direction () const
 return generated direction vector.
void getCartesian (TVector &oNormal, TReference oD) const
const TVectornormal () 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, snapped to zero by iRelativeTolerance.
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 parameter in generated parametric equation
const TValue t (const TPoint &iPoint) const
 return parameter along generated paremetric equation.
void flip ()
const bool isValid () const
 return true if line is a valid line (no normal or direction vectors that are zero).

Private Attributes

TVector normal_
TValue d_

Detailed Description

template<typename T, class NormalizingPolicy = Normalized>
class lass::prim::impl::Line2DCartesian< 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_cartesian.h.


Member Typedef Documentation

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

Definition at line 69 of file line_2d_cartesian.h.

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

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

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

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

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

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

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


Member Enumeration Documentation

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

Enumerator:
dimension 

Definition at line 80 of file line_2d_cartesian.h.


Constructor & Destructor Documentation

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

initializes to an invalid state.

Definition at line 63 of file line_2d_cartesian.inl.

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

template<typename T , class NP >
lass::prim::impl::Line2DCartesian< T, NP >::Line2DCartesian ( 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 80 of file line_2d_cartesian.inl.

References lass::prim::impl::Line2DCartesian< T, NormalizingPolicy >::d_, lass::prim::dot(), lass::prim::impl::Line2DCartesian< T, NormalizingPolicy >::normal_, and lass::prim::Point2D< T >::position().

template<typename T , class NP >
lass::prim::impl::Line2DCartesian< T, NP >::Line2DCartesian ( 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 iDir.
  • 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 96 of file line_2d_cartesian.inl.

References lass::prim::impl::Line2DCartesian< T, NormalizingPolicy >::d_, lass::prim::dot(), lass::prim::impl::Line2DCartesian< T, NormalizingPolicy >::normal_, and lass::prim::Point2D< T >::position().

template<typename T , class NP >
lass::prim::impl::Line2DCartesian< T, NP >::Line2DCartesian ( 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 112 of file line_2d_cartesian.inl.

References lass::prim::impl::Line2DCartesian< T, NormalizingPolicy >::d_, lass::prim::dot(), lass::prim::impl::Line2DCartesian< T, NormalizingPolicy >::normal_, and lass::prim::Point2D< T >::position().

template<typename T , class NP >
lass::prim::impl::Line2DCartesian< T, NP >::Line2DCartesian ( 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 128 of file line_2d_cartesian.inl.

References lass::prim::impl::Line2DCartesian< T, NormalizingPolicy >::d_, and lass::prim::impl::Line2DCartesian< T, NormalizingPolicy >::normal_.


Member Function Documentation

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

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

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

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

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

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

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

template<typename T , class NP >
const Line2DCartesian< T, NP >::TVector lass::prim::impl::Line2DCartesian< 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 211 of file line_2d_cartesian.inl.

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

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

template<typename T , class NP >
const Line2DCartesian< T, NP >::TVector lass::prim::impl::Line2DCartesian< 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 224 of file line_2d_cartesian.inl.

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

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

project a point orthogonally onto the line

Definition at line 235 of file line_2d_cartesian.inl.

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

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

project a vector orthogonally onto the line

Definition at line 246 of file line_2d_cartesian.inl.

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

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

reflect a point orthogonally into the line.

Definition at line 257 of file line_2d_cartesian.inl.

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

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

reflect a vector orthogonally into the line

Definition at line 268 of file line_2d_cartesian.inl.

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

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

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

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

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


Field Documentation

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

template<typename T , class NormalizingPolicy = Normalized>
TValue lass::prim::impl::Line2DCartesian< 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