#include <RayTraceDetection.h>


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 |
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.
| typedef sofa::helper::vector<sofa::core::componentmodel::collision::DetectionOutput> sofa::component::collision::RayTraceDetection::OutputVector |
Definition at line 61 of file RayTraceDetection.h.
| sofa::component::collision::RayTraceDetection::RayTraceDetection | ( | ) |
Definition at line 77 of file RayTraceDetection.cpp.
| void sofa::component::collision::RayTraceDetection::addCollisionModel | ( | core::CollisionModel * | cm | ) | [virtual] |
Add a new collision model to the set of root collision models managed by this class.
Implements sofa::core::componentmodel::collision::BroadPhaseDetection.
Definition at line 257 of file RayTraceDetection.cpp.
References sofa::core::CollisionModel::begin(), sofa::core::CollisionModel::canCollideWith(), sofa::core::componentmodel::collision::ElementIntersector::canIntersect(), sofa::core::componentmodel::collision::BroadPhaseDetection::cmPairs, collisionModels, sofa::core::CollisionModel::empty(), sofa::core::componentmodel::collision::Intersection::findIntersector(), sofa::core::componentmodel::collision::Detection::intersectionMethod, and sofa::core::CollisionModel::isSimulated().
| 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().
Data< bool > sofa::component::collision::RayTraceDetection::bDraw [private] |
sofa::helper::vector< core::CollisionModel * > sofa::component::collision::RayTraceDetection::collisionModels [private] |
Definition at line 57 of file RayTraceDetection.h.
Referenced by addCollisionModel(), and beginBroadPhase().
1.5.7.1