Jafar
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Private Attributes
jafar::geom::Atom< dimension > Class Template Reference

class Atom Atom is the base class of geometric objects. More...


Detailed Description

template<int dimension>
class jafar::geom::Atom< dimension >

class Atom Atom is the base class of geometric objects.

It defines a few basic function that are shared between the different type of geometric objects. It also defined functions that need to be reimplemented.

A geometric object is divided in two part, a base class which inherits Atom and a driver which inherits Atom::Driver. The base class is the public one, it defines a set of functions that can be used for computational purposes, while the driver contains the parameters of the class which can be of different types.

Definition at line 28 of file Atom.hpp.

#include <Atom.hpp>

Inheritance diagram for jafar::geom::Atom< dimension >:
Inheritance graph
[legend]

List of all members.

Classes

class  Driver
 This is the base class for all geometric objects Drivers. More...

Public Types

enum  Type {
  T_Point, T_Line, T_HyperPlane, T_OrientedPlan,
  T_PolyLine, T_Segment, T_Facet, T_Repere
}
 This enum allows to specify the type of geometric object.
typedef
boost::numeric::ublas::bounded_vector
< double, dimension+1 > 
HomogenousVecD
typedef
boost::numeric::ublas::bounded_vector
< double, dimension > 
VecD
typedef
boost::numeric::ublas::bounded_matrix
< double, dimension+1,dimension+1 > 
HomogenousMatrixD
typedef
boost::numeric::ublas::bounded_matrix
< double, dimension, dimension > 
MatrixD
typedef
boost::numeric::ublas::bounded_matrix
< double, 1,dimension+1 > 
HomogenousMatrix1D
typedef
boost::numeric::ublas::bounded_matrix
< double, dimension+1, 1 > 
HomogenousMatrixD1
typedef
jblas::bounded_symmetric_matrix
< double, dimension+1 > 
HomogenousSymMatrixD
typedef
jblas::bounded_symmetric_matrix
< double, dimension > 
SymMatrixD
typedef Repere< dimension > RepereD
typedef Transformable< dimension > TransformableD

Public Member Functions

 Atom (Driver *driver)
const RepereDreference () const
virtual Type type () const =0
virtual BoundingBox< dimension > boundingBox () const =0
virtual void accept (AtomVisitorInterface< dimension > *) const =0
virtual double distance (const Atom< dimension > &) const
virtual double distance (const Point< dimension > &) const =0
virtual double distance (const Line< dimension > &) const =0
virtual double distance (const HyperPlane< dimension > &) const =0
virtual double distance (const Segment< dimension > &) const =0
virtual double distance (const PolyLine< dimension > &) const =0
virtual double distance (const Facet< dimension > &) const =0
virtual double distance (const RepereD &) const =0
virtual double angle (const Line< dimension > &) const =0
virtual double angle (const HyperPlane< dimension > &) const =0
virtual double angle (const Segment< dimension > &) const =0
virtual double angle (const PolyLine< dimension > &) const =0
virtual double angle (const Facet< dimension > &) const =0
virtual double angle (const RepereD &) const =0
bool hasCov () const
virtual std::string toString () const
void setId (unsigned int _id)
unsigned id () const
void applyTransformation (const HomogenousMatrixD &_transformation)
 Apply a transformation on an object, if the Driver inherits Transformable .
bool isTransformable () const

Static Public Member Functions

static std::string type2String (Type type)

Static Public Attributes

static const unsigned int NO_ID = -1
static const int Dimension = dimension

Protected Member Functions

void setDriver (Driver *d)

Protected Attributes

const double Epsilon

Private Attributes

Driverm_driver
Transformable< dimension > * m_transformable
unsigned int m_id

Member Function Documentation

template<int dimension>
virtual double jafar::geom::Atom< dimension >::angle ( const Line< dimension > &  ) const [pure virtual]
Returns:
the angle between this Atom and a Line (unless you can't, it's prefferable to use the geom::distance function)
template<int dimension>
virtual double jafar::geom::Atom< dimension >::angle ( const HyperPlane< dimension > &  ) const [pure virtual]
Returns:
the angle between this Atom and a HyperPlane (unless you can't, it's prefferable to use the geom::distance function)
template<int dimension>
virtual double jafar::geom::Atom< dimension >::angle ( const Segment< dimension > &  ) const [pure virtual]
Returns:
the angle between this Atom and a Segment (unless you can't, it's prefferable to use the geom::distance function)
template<int dimension>
virtual double jafar::geom::Atom< dimension >::angle ( const PolyLine< dimension > &  ) const [pure virtual]
Returns:
the angle between this Atom and a PolyLine (unless you can't, it's prefferable to use the geom::distance function)
template<int dimension>
virtual double jafar::geom::Atom< dimension >::angle ( const Facet< dimension > &  ) const [pure virtual]
Returns:
the angle between this Atom and a Facet (unless you can't, it's prefferable to use the geom::distance function)
template<int dimension>
virtual double jafar::geom::Atom< dimension >::angle ( const RepereD ) const [pure virtual]
Returns:
the angle between this Atom and a Repere (unless you can't, it's prefferable to use the geom::distance function)
template<int dimension>
virtual BoundingBox<dimension> jafar::geom::Atom< dimension >::boundingBox ( ) const [pure virtual]
template<int dimension>
double jafar::geom::Atom< dimension >::distance ( const Atom< dimension > &  atom) const [virtual]
Returns:
the distance between this Atom and an other Atom (unless you can't, it's prefferable to use the geom::distance function) There is absolutely no guarantee that this function will give the correct answer, unless the Atom is a Point, Line, HyperPlane, Segment, PolyLine, Facet or Repere)

Definition at line 63 of file AtomImpl.hpp.

References JFR_ASSERT.

template<int dimension>
virtual double jafar::geom::Atom< dimension >::distance ( const Point< dimension > &  ) const [pure virtual]
Returns:
the distance between this Atom and a Point (unless you can't, it's prefferable to use the geom::distance function)
template<int dimension>
virtual double jafar::geom::Atom< dimension >::distance ( const Line< dimension > &  ) const [pure virtual]
Returns:
the distance between this Atom and a Line (unless you can't, it's prefferable to use the geom::distance function)
template<int dimension>
virtual double jafar::geom::Atom< dimension >::distance ( const HyperPlane< dimension > &  ) const [pure virtual]
Returns:
the distance between this Atom and a HyperPlane (unless you can't, it's prefferable to use the geom::distance function)
template<int dimension>
virtual double jafar::geom::Atom< dimension >::distance ( const Segment< dimension > &  ) const [pure virtual]
Returns:
the distance between this Atom and a Segment (unless you can't, it's prefferable to use the geom::distance function)
template<int dimension>
virtual double jafar::geom::Atom< dimension >::distance ( const PolyLine< dimension > &  ) const [pure virtual]
Returns:
the distance between this Atom and a PolyLine (unless you can't, it's prefferable to use the geom::distance function)
template<int dimension>
virtual double jafar::geom::Atom< dimension >::distance ( const Facet< dimension > &  ) const [pure virtual]
Returns:
the distance between this Atom and a Facet (unless you can't, it's prefferable to use the geom::distance function)
template<int dimension>
virtual double jafar::geom::Atom< dimension >::distance ( const RepereD ) const [pure virtual]
Returns:
the distance between this Atom and the origin of a Repere (unless you can't, it's prefferable to use the geom::distance function)
template<int dimension>
bool jafar::geom::Atom< dimension >::hasCov ( ) const [inline]
template<int dimension>
bool jafar::geom::Atom< dimension >::isTransformable ( ) const
Returns:
true if the object is transformable.

Definition at line 127 of file AtomImpl.hpp.

template<int dimension>
const Repere< dimension > * jafar::geom::Atom< dimension >::reference ( ) const [inline]
template<int dimension>
virtual Type jafar::geom::Atom< dimension >::type ( ) const [pure virtual]

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on Wed Oct 15 2014 00:37:36 for Jafar by doxygen 1.7.6.1
LAAS-CNRS