sofa::component::collision::RayTraceDetection Class Reference

It is a Ray Trace based collision detection algorithm. More...

#include <RayTraceDetection.h>

Inheritance diagram for sofa::component::collision::RayTraceDetection:

Inheritance graph
[legend]
Collaboration diagram for sofa::component::collision::RayTraceDetection:

Collaboration graph
[legend]

Public Types

typedef sofa::helper::vector
< sofa::core::componentmodel::collision::DetectionOutput > 
OutputVector

Public Member Functions

 RayTraceDetection ()
void setDraw (bool val)
void selfCollision (TriangleOctreeModel *cm1)
void addCollisionModel (core::CollisionModel *cm)
 Add a new collision model to the set of root collision models managed by this class.
void addCollisionPair (const std::pair< core::CollisionModel *, core::CollisionModel * > &cmPair)
 Add a new potentially colliding pairs of models.
void findPairsVolume (CubeModel *cm1, CubeModel *cm2)
virtual void beginBroadPhase ()
 Clear all the potentially colliding pairs detected in the previous simulation step.
void draw ()
 Render internal data of this object, for debugging purposes.

Private Attributes

sofa::helper::vector
< core::CollisionModel * > 
collisionModels
Data< bool > bDraw

Detailed Description

It is a Ray Trace based collision detection algorithm.

For each point in one object, we trace a ray following de oposite of the point's normal up to find a triangle in the other object. Both triangles are tested to evaluate if they are in colliding state. It must be used with a TriangleOctreeModel,as an octree is used to traverse the object.

Definition at line 53 of file RayTraceDetection.h.


Member Typedef Documentation

Definition at line 61 of file RayTraceDetection.h.


Constructor & Destructor Documentation

sofa::component::collision::RayTraceDetection::RayTraceDetection (  ) 

Definition at line 77 of file RayTraceDetection.cpp.


Member Function Documentation

void sofa::component::collision::RayTraceDetection::addCollisionModel ( core::CollisionModel *  cm  )  [virtual]

void sofa::component::collision::RayTraceDetection::addCollisionPair ( const std::pair< core::CollisionModel *, core::CollisionModel * > &  cmPair  )  [virtual]

Add a new potentially colliding pairs of models.

Implements sofa::core::componentmodel::collision::NarrowPhaseDetection.

Definition at line 289 of file RayTraceDetection.cpp.

References findPairsVolume(), and sofa::helper::system::thread::CTime::getRefTime().

virtual void sofa::component::collision::RayTraceDetection::beginBroadPhase (  )  [inline, virtual]

Clear all the potentially colliding pairs detected in the previous simulation step.

Reimplemented from sofa::core::componentmodel::collision::BroadPhaseDetection.

Definition at line 76 of file RayTraceDetection.h.

References collisionModels.

void sofa::component::collision::RayTraceDetection::draw (  )  [virtual]

Render internal data of this object, for debugging purposes.

Reimplemented from sofa::core::objectmodel::BaseObject.

Definition at line 315 of file RayTraceDetection.cpp.

References bDraw, sofa::core::objectmodel::Data< T >::getValue(), and sofa::core::componentmodel::collision::NarrowPhaseDetection::outputsMap.

void sofa::component::collision::RayTraceDetection::findPairsVolume ( CubeModel *  cm1,
CubeModel *  cm2 
)

Definition at line 84 of file RayTraceDetection.cpp.

References sofa::component::collision::TriangleOctreeModel::buildOctree(), dot(), sofa::core::componentmodel::collision::DetectionOutput::elem, sofa::component::collision::TriangleModel::FLAG_P1, sofa::component::collision::TriangleModel::FLAG_P2, sofa::component::collision::TriangleModel::FLAG_P3, sofa::component::collision::Triangle::flags(), sofa::core::CollisionModel::getLast(), sofa::core::CollisionModel::getSize(), sofa::core::componentmodel::collision::DetectionOutput::id, sofa::component::collision::Cube::maxVect(), sofa::component::collision::Cube::minVect(), sofa::component::collision::Triangle::n(), sofa::core::componentmodel::collision::DetectionOutput::normal, sofa::component::collision::TriangleOctreeModel::octreeRoot, sofa::core::componentmodel::collision::NarrowPhaseDetection::outputsMap, sofa::component::collision::Triangle::p1(), sofa::component::collision::Triangle::p1Index(), sofa::component::collision::Triangle::p2(), sofa::component::collision::Triangle::p2Index(), sofa::component::collision::Triangle::p3(), sofa::component::collision::Triangle::p3Index(), sofa::component::collision::TriangleOctreeModel::pNorms, sofa::core::componentmodel::collision::DetectionOutput::point, sofa::component::collision::TriangleOctree::traceResult::t, sofa::component::collision::TriangleOctree::trace(), sofa::component::collision::TriangleOctree::traceResult::u, sofa::component::collision::TriangleOctree::traceResult::v, and sofa::core::componentmodel::collision::DetectionOutput::value.

Referenced by addCollisionPair().

void sofa::component::collision::RayTraceDetection::selfCollision ( TriangleOctreeModel *  cm1  ) 

void sofa::component::collision::RayTraceDetection::setDraw ( bool  val  )  [inline]

Definition at line 64 of file RayTraceDetection.h.

References bDraw, and sofa::core::objectmodel::Data< T >::setValue().


Field Documentation

Definition at line 58 of file RayTraceDetection.h.

Referenced by draw(), and setDraw().

Definition at line 57 of file RayTraceDetection.h.

Referenced by addCollisionModel(), and beginBroadPhase().


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

Generated on Sun Nov 23 04:17:35 2008 for Sofa by  doxygen 1.5.7.1