#include <NewProximityIntersection.h>


Public Member Functions | |
| NewProximityIntersection () | |
| virtual void | init () |
| Initialization method called at graph modification, during bottom-up traversal. | |
| virtual bool | useProximity () const |
| returns true if algorithm uses proximity | |
| double | getAlarmDistance () const |
| Return the alarm distance (must return 0 if useNewProximity() is false). | |
| double | getContactDistance () const |
| Return the contact distance (must return 0 if useNewProximity() is false). | |
| void | setAlarmDistance (double v) |
| void | setContactDistance (double v) |
| bool | testIntersection (Cube &, Cube &) |
| bool | testIntersection (Point &, Point &) |
| template<class Sphere > | |
| bool | testIntersection (Sphere &, Point &) |
| template<class Sphere > | |
| bool | testIntersection (Sphere &, Sphere &) |
| bool | testIntersection (Line &, Point &) |
| template<class Sphere > | |
| bool | testIntersection (Line &, Sphere &) |
| bool | testIntersection (Line &, Line &) |
| bool | testIntersection (Triangle &, Point &) |
| template<class Sphere > | |
| bool | testIntersection (Triangle &, Sphere &) |
| bool | testIntersection (Triangle &, Line &) |
| bool | testIntersection (Triangle &, Triangle &) |
| bool | testIntersection (Ray &, Triangle &) |
| int | computeIntersection (Cube &, Cube &, OutputVector *) |
| int | computeIntersection (Point &, Point &, OutputVector *) |
| template<class Sphere > | |
| int | computeIntersection (Sphere &, Point &, OutputVector *) |
| template<class Sphere > | |
| int | computeIntersection (Sphere &, Sphere &, OutputVector *) |
| int | computeIntersection (Line &, Point &, OutputVector *) |
| template<class Sphere > | |
| int | computeIntersection (Line &, Sphere &, OutputVector *) |
| int | computeIntersection (Line &, Line &, OutputVector *) |
| int | computeIntersection (Triangle &, Point &, OutputVector *) |
| template<class Sphere > | |
| int | computeIntersection (Triangle &, Sphere &, OutputVector *) |
| int | computeIntersection (Triangle &, Line &, OutputVector *) |
| int | computeIntersection (Triangle &, Triangle &, OutputVector *) |
| int | computeIntersection (Ray &, Triangle &, OutputVector *) |
Static Public Member Functions | |
| static int | doIntersectionLineLine (double dist2, const Vector3 &p1, const Vector3 &p2, const Vector3 &q1, const Vector3 &q2, OutputVector *contacts, int id) |
| static int | doIntersectionLinePoint (double dist2, const Vector3 &p1, const Vector3 &p2, const Vector3 &q, OutputVector *contacts, int id, bool swapElems=false) |
| static int | doIntersectionPointPoint (double dist2, const Vector3 &p, const Vector3 &q, OutputVector *contacts, int id) |
| static int | doIntersectionTrianglePoint (double dist2, int flags, const Vector3 &p1, const Vector3 &p2, const Vector3 &p3, const Vector3 &n, const Vector3 &q, OutputVector *contacts, int id, bool swapElems=false) |
Data Fields | |
| Data< double > | alarmDistance |
| Data< double > | contactDistance |
Definition at line 46 of file NewProximityIntersection.h.
| sofa::component::collision::NewProximityIntersection::NewProximityIntersection | ( | ) |
Definition at line 55 of file NewProximityIntersection.cpp.
| int sofa::component::collision::NewProximityIntersection::computeIntersection | ( | Ray & | t1, | |
| Triangle & | t2, | |||
| OutputVector * | contacts | |||
| ) |
Reimplemented from sofa::component::collision::DiscreteIntersection.
Definition at line 337 of file NewProximityIntersection.cpp.
References sofa::component::collision::Ray::direction(), sofa::core::componentmodel::collision::DetectionOutput::elem, sofa::core::componentmodel::collision::DetectionOutput::freePoint, getAlarmDistance(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), sofa::component::collision::Ray::l(), sofa::component::collision::Triangle::n(), sofa::component::collision::DistanceSegTri::NewComputation(), sofa::defaulttype::Vec< N, real >::norm(), sofa::defaulttype::Vec< N, real >::norm2(), sofa::core::componentmodel::collision::DetectionOutput::normal, sofa::component::collision::Ray::origin(), sofa::core::componentmodel::collision::DetectionOutput::point, and sofa::core::componentmodel::collision::DetectionOutput::value.
| int sofa::component::collision::NewProximityIntersection::computeIntersection | ( | Triangle & | e1, | |
| Triangle & | e2, | |||
| OutputVector * | contacts | |||
| ) |
Definition at line 251 of file NewProximityIntersection.cpp.
References doIntersectionTrianglePoint(), sofa::component::collision::TriangleModel::FLAG_P1, sofa::component::collision::TriangleModel::FLAG_P2, sofa::component::collision::TriangleModel::FLAG_P3, sofa::component::collision::Triangle::flags(), getAlarmDistance(), sofa::core::TCollisionElementIterator< TModel >::getCollisionModel(), getContactDistance(), sofa::core::BaseCollisionElementIterator::getIndex(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), sofa::component::collision::Triangle::n(), sofa::component::collision::Triangle::p1(), sofa::component::collision::Triangle::p2(), and sofa::component::collision::Triangle::p3().
| int sofa::component::collision::NewProximityIntersection::computeIntersection | ( | Triangle & | e1, | |
| Line & | e2, | |||
| OutputVector * | contacts | |||
| ) |
Reimplemented from sofa::component::collision::DiscreteIntersection.
Definition at line 201 of file NewProximityIntersection.cpp.
References doIntersectionLinePoint(), doIntersectionTrianglePoint(), sofa::component::collision::TriangleModel::FLAG_P1, sofa::component::collision::TriangleModel::FLAG_P2, sofa::component::collision::TriangleModel::FLAG_P3, sofa::component::collision::Triangle::flags(), getAlarmDistance(), getContactDistance(), sofa::core::BaseCollisionElementIterator::getIndex(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), sofa::component::collision::Triangle::n(), sofa::component::collision::Line::p1(), sofa::component::collision::Triangle::p1(), sofa::component::collision::Line::p2(), sofa::component::collision::Triangle::p2(), and sofa::component::collision::Triangle::p3().
| int sofa::component::collision::NewProximityIntersection::computeIntersection | ( | Triangle & | e1, | |
| Sphere & | e2, | |||
| OutputVector * | contacts | |||
| ) | [inline] |
Definition at line 369 of file NewProximityIntersection.inl.
References sofa::component::collision::TSphere< DataTypes >::center(), doIntersectionTrianglePoint(), sofa::component::collision::Triangle::flags(), getAlarmDistance(), getContactDistance(), sofa::core::BaseCollisionElementIterator::getIndex(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), sofa::component::collision::Triangle::n(), sofa::component::collision::Triangle::p1(), sofa::component::collision::Triangle::p2(), sofa::component::collision::Triangle::p3(), and sofa::component::collision::TSphere< DataTypes >::r().
| int sofa::component::collision::NewProximityIntersection::computeIntersection | ( | Triangle & | e1, | |
| Point & | e2, | |||
| OutputVector * | contacts | |||
| ) |
Definition at line 178 of file NewProximityIntersection.cpp.
References doIntersectionTrianglePoint(), sofa::component::collision::Triangle::flags(), getAlarmDistance(), getContactDistance(), sofa::core::BaseCollisionElementIterator::getIndex(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), sofa::component::collision::Triangle::n(), sofa::component::collision::Point::p(), sofa::component::collision::Triangle::p1(), sofa::component::collision::Triangle::p2(), and sofa::component::collision::Triangle::p3().
| int sofa::component::collision::NewProximityIntersection::computeIntersection | ( | Line & | e1, | |
| Line & | e2, | |||
| OutputVector * | contacts | |||
| ) |
Definition at line 154 of file NewProximityIntersection.cpp.
References doIntersectionLineLine(), getAlarmDistance(), sofa::core::TCollisionElementIterator< TModel >::getCollisionModel(), getContactDistance(), sofa::core::BaseCollisionElementIterator::getIndex(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), sofa::component::collision::Line::p1(), and sofa::component::collision::Line::p2().
| int sofa::component::collision::NewProximityIntersection::computeIntersection | ( | Line & | e1, | |
| Sphere & | e2, | |||
| OutputVector * | contacts | |||
| ) | [inline] |
Definition at line 345 of file NewProximityIntersection.inl.
References sofa::component::collision::TSphere< DataTypes >::center(), doIntersectionLinePoint(), getAlarmDistance(), getContactDistance(), sofa::core::BaseCollisionElementIterator::getIndex(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), sofa::component::collision::Line::p1(), sofa::component::collision::Line::p2(), and sofa::component::collision::TSphere< DataTypes >::r().
| int sofa::component::collision::NewProximityIntersection::computeIntersection | ( | Line & | e1, | |
| Point & | e2, | |||
| OutputVector * | contacts | |||
| ) |
Definition at line 132 of file NewProximityIntersection.cpp.
References doIntersectionLinePoint(), getAlarmDistance(), getContactDistance(), sofa::core::BaseCollisionElementIterator::getIndex(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), sofa::component::collision::Point::p(), sofa::component::collision::Line::p1(), and sofa::component::collision::Line::p2().
| int sofa::component::collision::NewProximityIntersection::computeIntersection | ( | Sphere & | e1, | |
| Sphere & | e2, | |||
| OutputVector * | contacts | |||
| ) | [inline] |
Reimplemented from sofa::component::collision::DiscreteIntersection.
Definition at line 321 of file NewProximityIntersection.inl.
References sofa::component::collision::TSphere< DataTypes >::center(), doIntersectionPointPoint(), getAlarmDistance(), sofa::core::TCollisionElementIterator< TModel >::getCollisionModel(), getContactDistance(), sofa::core::BaseCollisionElementIterator::getIndex(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), and sofa::component::collision::TSphere< DataTypes >::r().
| int sofa::component::collision::NewProximityIntersection::computeIntersection | ( | Sphere & | e1, | |
| Point & | e2, | |||
| OutputVector * | contacts | |||
| ) | [inline] |
Definition at line 295 of file NewProximityIntersection.inl.
References sofa::component::collision::TSphere< DataTypes >::center(), doIntersectionPointPoint(), getAlarmDistance(), sofa::core::TCollisionElementIterator< TModel >::getCollisionModel(), getContactDistance(), sofa::core::BaseCollisionElementIterator::getIndex(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), sofa::component::collision::Point::p(), and sofa::component::collision::TSphere< DataTypes >::r().
| int sofa::component::collision::NewProximityIntersection::computeIntersection | ( | Point & | e1, | |
| Point & | e2, | |||
| OutputVector * | contacts | |||
| ) |
Definition at line 110 of file NewProximityIntersection.cpp.
References doIntersectionPointPoint(), getAlarmDistance(), sofa::core::TCollisionElementIterator< TModel >::getCollisionModel(), getContactDistance(), sofa::core::BaseCollisionElementIterator::getIndex(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), and sofa::component::collision::Point::p().
| int sofa::component::collision::NewProximityIntersection::computeIntersection | ( | Cube & | , | |
| Cube & | , | |||
| OutputVector * | ||||
| ) |
Reimplemented from sofa::component::collision::DiscreteIntersection.
Definition at line 97 of file NewProximityIntersection.cpp.
| int sofa::component::collision::NewProximityIntersection::doIntersectionLineLine | ( | double | dist2, | |
| const Vector3 & | p1, | |||
| const Vector3 & | p2, | |||
| const Vector3 & | q1, | |||
| const Vector3 & | q2, | |||
| OutputVector * | contacts, | |||
| int | id | |||
| ) | [inline, static] |
Definition at line 51 of file NewProximityIntersection.inl.
References sofa::defaulttype::determinant(), sofa::core::componentmodel::collision::DetectionOutput::id, sofa::defaulttype::Vec< N, real >::norm(), sofa::defaulttype::Vec< N, real >::norm2(), sofa::core::componentmodel::collision::DetectionOutput::normal, sofa::core::componentmodel::collision::DetectionOutput::point, and sofa::core::componentmodel::collision::DetectionOutput::value.
Referenced by computeIntersection().
| int sofa::component::collision::NewProximityIntersection::doIntersectionLinePoint | ( | double | dist2, | |
| const Vector3 & | p1, | |||
| const Vector3 & | p2, | |||
| const Vector3 & | q, | |||
| OutputVector * | contacts, | |||
| int | id, | |||
| bool | swapElems = false | |||
| ) | [inline, static] |
Definition at line 102 of file NewProximityIntersection.inl.
References sofa::core::componentmodel::collision::DetectionOutput::id, sofa::defaulttype::Vec< N, real >::norm(), sofa::defaulttype::Vec< N, real >::norm2(), sofa::core::componentmodel::collision::DetectionOutput::normal, sofa::core::componentmodel::collision::DetectionOutput::point, and sofa::core::componentmodel::collision::DetectionOutput::value.
Referenced by computeIntersection().
| int sofa::component::collision::NewProximityIntersection::doIntersectionPointPoint | ( | double | dist2, | |
| const Vector3 & | p, | |||
| const Vector3 & | q, | |||
| OutputVector * | contacts, | |||
| int | id | |||
| ) | [inline, static] |
Definition at line 152 of file NewProximityIntersection.inl.
References sofa::core::componentmodel::collision::DetectionOutput::id, sofa::defaulttype::Vec< N, real >::norm(), sofa::defaulttype::Vec< N, real >::norm2(), sofa::core::componentmodel::collision::DetectionOutput::normal, sofa::core::componentmodel::collision::DetectionOutput::point, and sofa::core::componentmodel::collision::DetectionOutput::value.
Referenced by computeIntersection(), and testIntersection().
| int sofa::component::collision::NewProximityIntersection::doIntersectionTrianglePoint | ( | double | dist2, | |
| int | flags, | |||
| const Vector3 & | p1, | |||
| const Vector3 & | p2, | |||
| const Vector3 & | p3, | |||
| const Vector3 & | n, | |||
| const Vector3 & | q, | |||
| OutputVector * | contacts, | |||
| int | id, | |||
| bool | swapElems = false | |||
| ) | [inline, static] |
Definition at line 173 of file NewProximityIntersection.inl.
References sofa::defaulttype::determinant(), sofa::component::collision::TriangleModel::FLAG_E12, sofa::component::collision::TriangleModel::FLAG_E31, sofa::component::collision::TriangleModel::FLAG_P1, sofa::component::collision::TriangleModel::FLAG_P2, sofa::component::collision::TriangleModel::FLAG_P3, sofa::core::componentmodel::collision::DetectionOutput::id, sofa::defaulttype::Vec< N, real >::norm(), sofa::defaulttype::Vec< N, real >::norm2(), sofa::core::componentmodel::collision::DetectionOutput::normal, sofa::core::componentmodel::collision::DetectionOutput::point, and sofa::core::componentmodel::collision::DetectionOutput::value.
Referenced by computeIntersection().
| double sofa::component::collision::NewProximityIntersection::getAlarmDistance | ( | ) | const [inline, virtual] |
Return the alarm distance (must return 0 if useNewProximity() is false).
Reimplemented from sofa::core::componentmodel::collision::Intersection.
Definition at line 60 of file NewProximityIntersection.h.
References alarmDistance, and sofa::core::objectmodel::Data< T >::getValue().
Referenced by computeIntersection(), and testIntersection().
| double sofa::component::collision::NewProximityIntersection::getContactDistance | ( | ) | const [inline, virtual] |
Return the contact distance (must return 0 if useNewProximity() is false).
Reimplemented from sofa::core::componentmodel::collision::Intersection.
Definition at line 63 of file NewProximityIntersection.h.
References contactDistance, and sofa::core::objectmodel::Data< T >::getValue().
Referenced by computeIntersection().
| void sofa::component::collision::NewProximityIntersection::init | ( | void | ) | [virtual] |
Initialization method called at graph modification, during bottom-up traversal.
Reimplemented from sofa::core::objectmodel::BaseObject.
Reimplemented in sofa::gpu::cuda::CudaProximityIntersection.
Definition at line 61 of file NewProximityIntersection.cpp.
References sofa::core::componentmodel::collision::IntersectorMap::add(), sofa::core::componentmodel::collision::IntersectorMap::ignore(), and sofa::component::collision::DiscreteIntersection::intersectors.
| void sofa::component::collision::NewProximityIntersection::setAlarmDistance | ( | double | v | ) | [inline] |
Definition at line 65 of file NewProximityIntersection.h.
References alarmDistance, and sofa::core::objectmodel::Data< T >::setValue().
Referenced by sofa::filemanager::pml::PMLReader::BuildStructure(), and main().
| void sofa::component::collision::NewProximityIntersection::setContactDistance | ( | double | v | ) | [inline] |
Definition at line 67 of file NewProximityIntersection.h.
References contactDistance, and sofa::core::objectmodel::Data< T >::setValue().
Referenced by sofa::filemanager::pml::PMLReader::BuildStructure(), and main().
| bool sofa::component::collision::NewProximityIntersection::testIntersection | ( | Ray & | t1, | |
| Triangle & | t2 | |||
| ) |
Reimplemented from sofa::component::collision::DiscreteIntersection.
Definition at line 313 of file NewProximityIntersection.cpp.
References sofa::component::collision::Ray::direction(), getAlarmDistance(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), sofa::component::collision::Ray::l(), sofa::component::collision::Triangle::n(), sofa::component::collision::DistanceSegTri::NewComputation(), sofa::defaulttype::Vec< N, real >::norm2(), and sofa::component::collision::Ray::origin().
| bool sofa::component::collision::NewProximityIntersection::testIntersection | ( | Triangle & | , | |
| Triangle & | ||||
| ) |
Definition at line 245 of file NewProximityIntersection.cpp.
Reimplemented from sofa::component::collision::DiscreteIntersection.
Definition at line 195 of file NewProximityIntersection.cpp.
| bool sofa::component::collision::NewProximityIntersection::testIntersection | ( | Triangle & | , | |
| Sphere & | ||||
| ) | [inline] |
Definition at line 362 of file NewProximityIntersection.inl.
| bool sofa::component::collision::NewProximityIntersection::testIntersection | ( | Triangle & | , | |
| Point & | ||||
| ) |
Definition at line 172 of file NewProximityIntersection.cpp.
Definition at line 148 of file NewProximityIntersection.cpp.
| bool sofa::component::collision::NewProximityIntersection::testIntersection | ( | Line & | , | |
| Sphere & | ||||
| ) | [inline] |
Definition at line 338 of file NewProximityIntersection.inl.
Definition at line 126 of file NewProximityIntersection.cpp.
| bool sofa::component::collision::NewProximityIntersection::testIntersection | ( | Sphere & | e1, | |
| Sphere & | e2 | |||
| ) | [inline] |
Reimplemented from sofa::component::collision::DiscreteIntersection.
Definition at line 312 of file NewProximityIntersection.inl.
References sofa::component::collision::TSphere< DataTypes >::center(), doIntersectionPointPoint(), getAlarmDistance(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), and sofa::component::collision::TSphere< DataTypes >::r().
| bool sofa::component::collision::NewProximityIntersection::testIntersection | ( | Sphere & | e1, | |
| Point & | e2 | |||
| ) | [inline] |
Definition at line 286 of file NewProximityIntersection.inl.
References sofa::component::collision::TSphere< DataTypes >::center(), doIntersectionPointPoint(), getAlarmDistance(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), sofa::component::collision::Point::p(), and sofa::component::collision::TSphere< DataTypes >::r().
| bool sofa::component::collision::NewProximityIntersection::testIntersection | ( | Point & | e1, | |
| Point & | e2 | |||
| ) |
Definition at line 102 of file NewProximityIntersection.cpp.
References doIntersectionPointPoint(), getAlarmDistance(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), and sofa::component::collision::Point::p().
| bool sofa::component::collision::NewProximityIntersection::testIntersection | ( | Cube & | cube1, | |
| Cube & | cube2 | |||
| ) |
Reimplemented from sofa::component::collision::DiscreteIntersection.
Definition at line 80 of file NewProximityIntersection.cpp.
References getAlarmDistance(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), sofa::component::collision::Cube::maxVect(), and sofa::component::collision::Cube::minVect().
| virtual bool sofa::component::collision::NewProximityIntersection::useProximity | ( | ) | const [inline, virtual] |
returns true if algorithm uses proximity
Reimplemented from sofa::core::componentmodel::collision::Intersection.
Definition at line 57 of file NewProximityIntersection.h.
Definition at line 49 of file NewProximityIntersection.h.
Referenced by getAlarmDistance(), and setAlarmDistance().
Definition at line 50 of file NewProximityIntersection.h.
Referenced by getContactDistance(), and setContactDistance().
1.5.7.1