sofa::core::TCollisionElementIterator< TModel > Class Template Reference

Reference to an collision element defined by its index inside a given collision model. More...

#include <CollisionElement.h>

Inheritance diagram for sofa::core::TCollisionElementIterator< TModel >:

Inheritance graph
[legend]
Collaboration diagram for sofa::core::TCollisionElementIterator< TModel >:

Collaboration graph
[legend]

Public Types

typedef TModel Model
typedef std::vector< int >
::const_iterator 
VIterator

Public Member Functions

 TCollisionElementIterator (Model *model=NULL, int index=0)
 Constructor.
 TCollisionElementIterator (Model *model, int index, VIterator it, VIterator itend)
 Constructor.
 TCollisionElementIterator (Model *model, VIterator it, VIterator itend)
 Constructor.
Iterator Interface
template<class Model2 >
bool operator== (const TCollisionElementIterator< Model2 > &i) const
 Compare two iterators.
template<class Model2 >
bool operator!= (const TCollisionElementIterator< Model2 > &i) const
 Compare two iterators.
bool valid () const
 Test if this iterator is initialized with a valid CollisionModel.
Model * getCollisionModel () const
 Return the CollisionModel containing the referenced element.
Wrapper methods to access data and methods inside the CollisionModel.
std::pair
< CollisionElementIterator,
CollisionElementIterator > 
getInternalChildren () const
 Return the list (as a pair of iterators) of internal children of this element.
std::pair
< CollisionElementIterator,
CollisionElementIterator > 
getExternalChildren () const
 Return the list (as a pair of iterators) of external children of this element.
bool isLeaf () const
 Test if this element is a leaf.
bool canCollideWith (TCollisionElementIterator< Model > &elem)
 Test if this element can collide with another element.
double getProximity ()
 Distance to the actual (visual) surface.
double getContactStiffness ()
 Contact stiffness.
double getContactFriction ()
 Contact friction (damping) coefficient.
void draw ()
 Render this element.

Protected Attributes

Model * model
 CollisionModel containing the referenced element.

Detailed Description

template<class TModel>
class sofa::core::TCollisionElementIterator< TModel >

Reference to an collision element defined by its index inside a given collision model.

A CollisionElementIterator is only a temporary iterator and must not contain any data. It only contains inline non-virtual methods calling the appropriate methods in the parent model object. This class is a template in order to store reference to a specific type of element (such as a Cube in a CubeModel).

Definition at line 143 of file CollisionElement.h.


Member Typedef Documentation

template<class TModel >
typedef TModel sofa::core::TCollisionElementIterator< TModel >::Model

Definition at line 146 of file CollisionElement.h.

template<class TModel >
typedef std::vector<int>::const_iterator sofa::core::TCollisionElementIterator< TModel >::VIterator

Reimplemented from sofa::core::BaseCollisionElementIterator.

Definition at line 147 of file CollisionElement.h.


Constructor & Destructor Documentation

template<class TModel >
sofa::core::TCollisionElementIterator< TModel >::TCollisionElementIterator ( Model *  model = NULL,
int  index = 0 
) [inline]

Constructor.

In most cases it will be used by the CollisionModel to create interators to its elements (such as in the begin() and end() methods).

Definition at line 153 of file CollisionElement.h.

template<class TModel >
sofa::core::TCollisionElementIterator< TModel >::TCollisionElementIterator ( Model *  model,
int  index,
VIterator  it,
VIterator  itend 
) [inline]

Constructor.

This constructor should be used in case a vector of indices is used.

Definition at line 160 of file CollisionElement.h.

template<class TModel >
sofa::core::TCollisionElementIterator< TModel >::TCollisionElementIterator ( Model *  model,
VIterator  it,
VIterator  itend 
) [inline]

Constructor.

This constructor should be used in case a vector of indices is used.

Definition at line 167 of file CollisionElement.h.


Member Function Documentation

template<class TModel >
bool sofa::core::TCollisionElementIterator< TModel >::canCollideWith ( TCollisionElementIterator< Model > &  elem  )  [inline]

Test if this element can collide with another element.

See also:
CollisionModel::canCollideWithElement

Definition at line 230 of file CollisionElement.h.

Referenced by sofa::component::collision::GridCell::add().

template<class TModel >
void sofa::core::TCollisionElementIterator< TModel >::draw (  )  [inline]

Render this element.

See also:
CollisionModel::draw

Definition at line 248 of file CollisionElement.h.

Referenced by sofa::component::collision::RayPickInteractor::draw().

template<class TModel >
Model* sofa::core::TCollisionElementIterator< TModel >::getCollisionModel (  )  const [inline]

Return the CollisionModel containing the referenced element.

Definition at line 199 of file CollisionElement.h.

Referenced by sofa::component::collision::GridCell::add(), sofa::component::collision::VoxelGrid::add(), sofa::component::collision::BruteForceDetection::addCollisionPair(), sofa::component::collision::DefaultPickingManager< TDataTypes, ContactForceField >::attach(), sofa::component::collision::NewProximityIntersection::computeIntersection(), sofa::component::collision::MinProximityIntersection::computeIntersection(), sofa::component::collision::LocalMinDistance::computeIntersection(), sofa::component::collision::DiscreteIntersection::computeIntersection(), sofa::component::collision::RayPickInteractor::draw(), sofa::component::collision::TopologicalChangeManager::incisionCollisionModel(), sofa::component::collision::TopologicalChangeManager::incisionTriangleModel(), sofa::core::componentmodel::collision::Intersection::isSupported(), sofa::core::TCollisionElementIterator< sofa::component::collision::SphereTreeModel >::operator!=(), sofa::core::CollisionElementIterator::operator=(), sofa::core::TCollisionElementIterator< sofa::component::collision::SphereTreeModel >::operator==(), sofa::component::collision::RayPickInteractor::pickBody(), sofa::component::collision::TopologicalChangeManager::removeItemsFromCollisionModel(), sofa::component::collision::TopologicalChangeManager::removeItemsFromTriangleModel(), and sofa::component::collision::LocalMinDistance::testValidity().

template<class TModel >
double sofa::core::TCollisionElementIterator< TModel >::getContactFriction (  )  [inline]

Contact friction (damping) coefficient.

Definition at line 242 of file CollisionElement.h.

Referenced by sofa::component::collision::DefaultPickingManager< TDataTypes, ContactForceField >::attach().

template<class TModel >
double sofa::core::TCollisionElementIterator< TModel >::getContactStiffness (  )  [inline]

template<class Model >
std::pair< CollisionElementIterator, CollisionElementIterator > sofa::core::TCollisionElementIterator< Model >::getExternalChildren (  )  const [inline]

Return the list (as a pair of iterators) of external children of this element.

See also:
CollisionModel::getExternalChildren

Definition at line 325 of file CollisionElement.h.

References sofa::core::BaseCollisionElementIterator::index, and sofa::core::TCollisionElementIterator< TModel >::model.

template<class Model >
std::pair< CollisionElementIterator, CollisionElementIterator > sofa::core::TCollisionElementIterator< Model >::getInternalChildren (  )  const [inline]

Return the list (as a pair of iterators) of internal children of this element.

See also:
CollisionModel::getInternalChildren

Definition at line 319 of file CollisionElement.h.

References sofa::core::BaseCollisionElementIterator::index, and sofa::core::TCollisionElementIterator< TModel >::model.

template<class TModel >
double sofa::core::TCollisionElementIterator< TModel >::getProximity (  )  [inline]

template<class TModel >
bool sofa::core::TCollisionElementIterator< TModel >::isLeaf (  )  const [inline]

Test if this element is a leaf.

Returns:
true if the element(index) is leaf. i.e. If it is a primitive itself.

Definition at line 222 of file CollisionElement.h.

template<class TModel >
template<class Model2 >
bool sofa::core::TCollisionElementIterator< TModel >::operator!= ( const TCollisionElementIterator< Model2 > &  i  )  const [inline]

Compare two iterators.

Note that even it the iterators are of different types, they can point to the same element.

Definition at line 186 of file CollisionElement.h.

template<class TModel >
template<class Model2 >
bool sofa::core::TCollisionElementIterator< TModel >::operator== ( const TCollisionElementIterator< Model2 > &  i  )  const [inline]

Compare two iterators.

Note that even it the iterators are of different types, they can point to the same element.

Definition at line 178 of file CollisionElement.h.

template<class TModel >
bool sofa::core::TCollisionElementIterator< TModel >::valid (  )  const [inline]

Test if this iterator is initialized with a valid CollisionModel.

Note that it does not test if the referenced element inside the CollisionModel is valid.

Definition at line 193 of file CollisionElement.h.


Field Documentation

template<class TModel >
Model* sofa::core::TCollisionElementIterator< TModel >::model [protected]

CollisionModel containing the referenced element.

Definition at line 257 of file CollisionElement.h.

Referenced by sofa::core::TCollisionElementIterator< sofa::component::collision::SphereTreeModel >::canCollideWith(), sofa::component::collision::SingleSphere::center(), sofa::component::collision::TSphere< DataTypes >::center(), sofa::component::collision::Ray::direction(), sofa::core::TCollisionElementIterator< sofa::component::collision::SphereTreeModel >::draw(), sofa::component::collision::Triangle::flags(), sofa::component::collision::Tetrahedron::getBary(), sofa::core::TCollisionElementIterator< sofa::component::collision::SphereTreeModel >::getCollisionModel(), sofa::core::TCollisionElementIterator< sofa::component::collision::SphereTreeModel >::getContactFriction(), sofa::core::TCollisionElementIterator< sofa::component::collision::SphereTreeModel >::getContactStiffness(), sofa::component::collision::Tetrahedron::getCoord(), sofa::component::collision::Tetrahedron::getDBary(), sofa::component::collision::Tetrahedron::getDCoord(), sofa::core::TCollisionElementIterator< TModel >::getExternalChildren(), sofa::gpu::cuda::CudaRigidDistanceGridCollisionElement::getGrid(), sofa::component::collision::FFDDistanceGridCollisionElement::getGrid(), sofa::component::collision::RigidDistanceGridCollisionElement::getGrid(), sofa::core::TCollisionElementIterator< TModel >::getInternalChildren(), sofa::gpu::cuda::CudaRigidDistanceGridCollisionElement::getPrevDt(), sofa::component::collision::RigidDistanceGridCollisionElement::getPrevDt(), sofa::gpu::cuda::CudaRigidDistanceGridCollisionElement::getPrevGrid(), sofa::component::collision::RigidDistanceGridCollisionElement::getPrevGrid(), sofa::gpu::cuda::CudaRigidDistanceGridCollisionElement::getPrevRotation(), sofa::component::collision::RigidDistanceGridCollisionElement::getPrevRotation(), sofa::gpu::cuda::CudaRigidDistanceGridCollisionElement::getPrevTranslation(), sofa::component::collision::RigidDistanceGridCollisionElement::getPrevTranslation(), sofa::core::TCollisionElementIterator< sofa::component::collision::SphereTreeModel >::getProximity(), sofa::gpu::cuda::CudaRigidDistanceGridCollisionElement::getRotation(), sofa::component::collision::RigidDistanceGridCollisionElement::getRotation(), sofa::gpu::cuda::CudaPoint::getSize(), sofa::gpu::cuda::CudaRigidDistanceGridCollisionElement::getTranslation(), sofa::component::collision::RigidDistanceGridCollisionElement::getTranslation(), sofa::gpu::cuda::CudaPoint::i0(), sofa::component::collision::Line::i1(), sofa::component::collision::Line::i2(), sofa::core::TCollisionElementIterator< sofa::component::collision::SphereTreeModel >::isLeaf(), sofa::gpu::cuda::CudaRigidDistanceGridCollisionElement::isTransformed(), sofa::component::collision::RigidDistanceGridCollisionElement::isTransformed(), sofa::component::collision::Ray::l(), sofa::component::collision::Cube::maxVect(), sofa::component::collision::Cube::minVect(), sofa::component::collision::Triangle::n(), sofa::component::collision::Point::n(), sofa::core::TCollisionElementIterator< sofa::component::collision::SphereTreeModel >::operator!=(), sofa::core::CollisionElementIterator::operator=(), sofa::core::TCollisionElementIterator< sofa::component::collision::SphereTreeModel >::operator==(), sofa::component::collision::Ray::origin(), sofa::component::collision::Point::p(), sofa::component::collision::Triangle::p1(), sofa::component::collision::Tetrahedron::p1(), sofa::component::collision::Line::p1(), sofa::component::collision::Triangle::p1Free(), sofa::component::collision::Tetrahedron::p1Free(), sofa::component::collision::Line::p1Free(), sofa::component::collision::Triangle::p1Index(), sofa::component::collision::Tetrahedron::p1Index(), sofa::component::collision::Triangle::p2(), sofa::component::collision::Tetrahedron::p2(), sofa::component::collision::Line::p2(), sofa::component::collision::Triangle::p2Free(), sofa::component::collision::Tetrahedron::p2Free(), sofa::component::collision::Line::p2Free(), sofa::component::collision::Triangle::p2Index(), sofa::component::collision::Tetrahedron::p2Index(), sofa::component::collision::Triangle::p3(), sofa::component::collision::Tetrahedron::p3(), sofa::component::collision::Triangle::p3Free(), sofa::component::collision::Tetrahedron::p3Free(), sofa::component::collision::Triangle::p3Index(), sofa::component::collision::Tetrahedron::p3Index(), sofa::component::collision::Tetrahedron::p4(), sofa::component::collision::Tetrahedron::p4Free(), sofa::component::collision::Tetrahedron::p4Index(), sofa::component::collision::Point::pFree(), sofa::component::collision::SingleSphere::r(), sofa::component::collision::TSphere< DataTypes >::r(), sofa::component::collision::SingleSphere::setCenter(), sofa::gpu::cuda::CudaRigidDistanceGridCollisionElement::setGrid(), sofa::component::collision::FFDDistanceGridCollisionElement::setGrid(), sofa::component::collision::RigidDistanceGridCollisionElement::setGrid(), sofa::gpu::cuda::CudaRigidDistanceGridCollisionElement::setNewState(), sofa::component::collision::RigidDistanceGridCollisionElement::setNewState(), sofa::component::collision::Cube::subcells(), sofa::component::collision::Point::testLMD(), sofa::component::collision::SingleSphere::v(), sofa::component::collision::TSphere< DataTypes >::v(), sofa::component::collision::Point::v(), sofa::component::collision::Triangle::v1(), sofa::component::collision::Tetrahedron::v1(), sofa::component::collision::Line::v1(), sofa::component::collision::Triangle::v2(), sofa::component::collision::Tetrahedron::v2(), sofa::component::collision::Line::v2(), sofa::component::collision::Triangle::v3(), sofa::component::collision::Tetrahedron::v3(), sofa::component::collision::Tetrahedron::v4(), and sofa::core::TCollisionElementIterator< sofa::component::collision::SphereTreeModel >::valid().


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

Generated on Sun Nov 23 04:21:57 2008 for Sofa by  doxygen 1.5.7.1