#include <LocalMinDistance.h>


Definition at line 46 of file LocalMinDistance.h.
| sofa::component::collision::LocalMinDistance::LocalMinDistance | ( | ) |
Definition at line 62 of file LocalMinDistance.cpp.
| int sofa::component::collision::LocalMinDistance::computeIntersection | ( | Ray & | t1, | |
| Triangle & | t2, | |||
| OutputVector * | contacts | |||
| ) |
Reimplemented from sofa::component::collision::DiscreteIntersection.
Definition at line 797 of file LocalMinDistance.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::core::componentmodel::collision::DetectionOutput::id, 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::LocalMinDistance::computeIntersection | ( | Ray & | , | |
| Sphere & | , | |||
| OutputVector * | ||||
| ) |
Reimplemented from sofa::component::collision::DiscreteIntersection.
| int sofa::component::collision::LocalMinDistance::computeIntersection | ( | Triangle & | e2, | |
| Sphere & | e1, | |||
| OutputVector * | contacts | |||
| ) |
Definition at line 601 of file LocalMinDistance.cpp.
References sofa::component::collision::TSphere< DataTypes >::center(), sofa::defaulttype::determinant(), sofa::core::componentmodel::collision::DetectionOutput::elem, getAlarmDistance(), getContactDistance(), sofa::core::BaseCollisionElementIterator::getIndex(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), 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::component::collision::Triangle::p1(), sofa::component::collision::Triangle::p2(), sofa::component::collision::Triangle::p3(), sofa::core::componentmodel::collision::DetectionOutput::point, sofa::component::collision::TSphere< DataTypes >::r(), and sofa::core::componentmodel::collision::DetectionOutput::value.
| int sofa::component::collision::LocalMinDistance::computeIntersection | ( | Triangle & | e2, | |
| Point & | e1, | |||
| OutputVector * | contacts | |||
| ) |
Definition at line 300 of file LocalMinDistance.cpp.
References sofa::defaulttype::determinant(), sofa::core::componentmodel::collision::DetectionOutput::elem, sofa::core::componentmodel::collision::DetectionOutput::freePoint, getAlarmDistance(), getContactDistance(), sofa::core::BaseCollisionElementIterator::getIndex(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), 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::component::collision::Point::p(), sofa::component::collision::Triangle::p1(), sofa::component::collision::Triangle::p1Free(), sofa::component::collision::Triangle::p2(), sofa::component::collision::Triangle::p2Free(), sofa::component::collision::Triangle::p3(), sofa::component::collision::Triangle::p3Free(), sofa::component::collision::Point::pFree(), sofa::core::componentmodel::collision::DetectionOutput::point, testValidity(), and sofa::core::componentmodel::collision::DetectionOutput::value.
| int sofa::component::collision::LocalMinDistance::computeIntersection | ( | Line & | e1, | |
| Line & | e2, | |||
| OutputVector * | contacts | |||
| ) |
Definition at line 163 of file LocalMinDistance.cpp.
References sofa::defaulttype::determinant(), sofa::core::componentmodel::collision::DetectionOutput::elem, sofa::core::componentmodel::collision::DetectionOutput::freePoint, getAlarmDistance(), sofa::core::TCollisionElementIterator< TModel >::getCollisionModel(), getContactDistance(), sofa::core::BaseCollisionElementIterator::getIndex(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), 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::component::collision::Line::p1(), sofa::component::collision::Line::p1Free(), sofa::component::collision::Line::p2(), sofa::component::collision::Line::p2Free(), sofa::core::componentmodel::collision::DetectionOutput::point, testValidity(), and sofa::core::componentmodel::collision::DetectionOutput::value.
| int sofa::component::collision::LocalMinDistance::computeIntersection | ( | Line & | e2, | |
| Sphere & | e1, | |||
| OutputVector * | contacts | |||
| ) |
Definition at line 686 of file LocalMinDistance.cpp.
References sofa::component::collision::TSphere< DataTypes >::center(), sofa::core::componentmodel::collision::DetectionOutput::elem, getAlarmDistance(), getContactDistance(), sofa::core::BaseCollisionElementIterator::getIndex(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), 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::component::collision::Line::p1(), sofa::component::collision::Line::p2(), sofa::core::componentmodel::collision::DetectionOutput::point, sofa::component::collision::TSphere< DataTypes >::r(), and sofa::core::componentmodel::collision::DetectionOutput::value.
| int sofa::component::collision::LocalMinDistance::computeIntersection | ( | Line & | e2, | |
| Point & | e1, | |||
| OutputVector * | contacts | |||
| ) |
Definition at line 420 of file LocalMinDistance.cpp.
References sofa::core::componentmodel::collision::DetectionOutput::elem, sofa::core::componentmodel::collision::DetectionOutput::freePoint, getAlarmDistance(), getContactDistance(), sofa::core::BaseCollisionElementIterator::getIndex(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), 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::component::collision::Point::p(), sofa::component::collision::Line::p1(), sofa::component::collision::Line::p1Free(), sofa::component::collision::Line::p2(), sofa::component::collision::Line::p2Free(), sofa::component::collision::Point::pFree(), sofa::core::componentmodel::collision::DetectionOutput::point, testValidity(), and sofa::core::componentmodel::collision::DetectionOutput::value.
| int sofa::component::collision::LocalMinDistance::computeIntersection | ( | Sphere & | , | |
| Sphere & | , | |||
| OutputVector * | ||||
| ) |
Reimplemented from sofa::component::collision::DiscreteIntersection.
| int sofa::component::collision::LocalMinDistance::computeIntersection | ( | Sphere & | e1, | |
| Point & | e2, | |||
| OutputVector * | contacts | |||
| ) |
Definition at line 746 of file LocalMinDistance.cpp.
References sofa::component::collision::TSphere< DataTypes >::center(), sofa::core::componentmodel::collision::DetectionOutput::elem, getAlarmDistance(), sofa::core::TCollisionElementIterator< TModel >::getCollisionModel(), getContactDistance(), sofa::core::BaseCollisionElementIterator::getIndex(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), 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::component::collision::Point::p(), sofa::core::componentmodel::collision::DetectionOutput::point, sofa::component::collision::TSphere< DataTypes >::r(), and sofa::core::componentmodel::collision::DetectionOutput::value.
| int sofa::component::collision::LocalMinDistance::computeIntersection | ( | Point & | e1, | |
| Point & | e2, | |||
| OutputVector * | contacts | |||
| ) |
Definition at line 508 of file LocalMinDistance.cpp.
References sofa::core::componentmodel::collision::DetectionOutput::elem, sofa::core::componentmodel::collision::DetectionOutput::freePoint, getAlarmDistance(), sofa::core::TCollisionElementIterator< TModel >::getCollisionModel(), getContactDistance(), sofa::core::BaseCollisionElementIterator::getIndex(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), 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::component::collision::Point::p(), sofa::component::collision::Point::pFree(), sofa::core::componentmodel::collision::DetectionOutput::point, testValidity(), and sofa::core::componentmodel::collision::DetectionOutput::value.
| int sofa::component::collision::LocalMinDistance::computeIntersection | ( | Cube & | , | |
| Cube & | , | |||
| OutputVector * | ||||
| ) |
Reimplemented from sofa::component::collision::DiscreteIntersection.
Definition at line 110 of file LocalMinDistance.cpp.
| void sofa::component::collision::LocalMinDistance::draw | ( | ) | [virtual] |
Render internal data of this object, for debugging purposes.
Reimplemented from sofa::core::objectmodel::BaseObject.
Definition at line 968 of file LocalMinDistance.cpp.
References sofa::core::objectmodel::BaseObject::getContext().
| double sofa::component::collision::LocalMinDistance::getAlarmDistance | ( | ) | const [inline, virtual] |
Return the alarm distance (must return 0 if useMinProximity() is false).
Reimplemented from sofa::core::componentmodel::collision::Intersection.
Definition at line 66 of file LocalMinDistance.h.
References alarmDistance, and sofa::core::objectmodel::Data< T >::getValue().
Referenced by computeIntersection(), and testIntersection().
| double sofa::component::collision::LocalMinDistance::getContactDistance | ( | ) | const [inline, virtual] |
Return the contact distance (must return 0 if useMinProximity() is false).
Reimplemented from sofa::core::componentmodel::collision::Intersection.
Definition at line 69 of file LocalMinDistance.h.
References contactDistance, and sofa::core::objectmodel::Data< T >::getValue().
Referenced by computeIntersection().
| void sofa::component::collision::LocalMinDistance::init | ( | void | ) | [virtual] |
Initialization method called at graph modification, during bottom-up traversal.
Reimplemented from sofa::core::objectmodel::BaseObject.
Definition at line 70 of file LocalMinDistance.cpp.
References sofa::core::componentmodel::collision::IntersectorMap::add(), sofa::core::componentmodel::collision::IntersectorMap::ignore(), and sofa::component::collision::DiscreteIntersection::intersectors.
| void sofa::component::collision::LocalMinDistance::setAlarmDistance | ( | double | v | ) | [inline] |
Definition at line 71 of file LocalMinDistance.h.
References alarmDistance, and sofa::core::objectmodel::Data< T >::setValue().
| void sofa::component::collision::LocalMinDistance::setContactDistance | ( | double | v | ) | [inline] |
Definition at line 73 of file LocalMinDistance.h.
References contactDistance, and sofa::core::objectmodel::Data< T >::setValue().
Reimplemented from sofa::component::collision::DiscreteIntersection.
Definition at line 772 of file LocalMinDistance.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().
Reimplemented from sofa::component::collision::DiscreteIntersection.
Definition at line 559 of file LocalMinDistance.cpp.
References sofa::component::collision::TSphere< DataTypes >::center(), sofa::defaulttype::determinant(), getAlarmDistance(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), sofa::defaulttype::Vec< N, real >::norm2(), sofa::component::collision::Triangle::p1(), sofa::component::collision::Triangle::p2(), sofa::component::collision::Triangle::p3(), and sofa::component::collision::TSphere< DataTypes >::r().
Definition at line 239 of file LocalMinDistance.cpp.
References sofa::defaulttype::determinant(), getAlarmDistance(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), sofa::defaulttype::Vec< N, real >::norm2(), sofa::component::collision::Point::p(), sofa::component::collision::Triangle::p1(), sofa::component::collision::Triangle::p2(), sofa::component::collision::Triangle::p3(), and testValidity().
Definition at line 115 of file LocalMinDistance.cpp.
References sofa::defaulttype::determinant(), getAlarmDistance(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), sofa::defaulttype::Vec< N, real >::norm2(), sofa::component::collision::Line::p1(), sofa::component::collision::Line::p2(), and testValidity().
Definition at line 653 of file LocalMinDistance.cpp.
References sofa::component::collision::TSphere< DataTypes >::center(), getAlarmDistance(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), sofa::defaulttype::Vec< N, real >::norm2(), sofa::component::collision::Line::p1(), sofa::component::collision::Line::p2(), and sofa::component::collision::TSphere< DataTypes >::r().
Definition at line 380 of file LocalMinDistance.cpp.
References getAlarmDistance(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), sofa::defaulttype::Vec< N, real >::norm2(), sofa::component::collision::Point::p(), sofa::component::collision::Line::p1(), sofa::component::collision::Line::p2(), and testValidity().
Reimplemented from sofa::component::collision::DiscreteIntersection.
Definition at line 729 of file LocalMinDistance.cpp.
References sofa::component::collision::TSphere< DataTypes >::center(), getAlarmDistance(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), sofa::defaulttype::Vec< N, real >::norm2(), sofa::component::collision::Point::p(), and sofa::component::collision::TSphere< DataTypes >::r().
Definition at line 488 of file LocalMinDistance.cpp.
References getAlarmDistance(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), sofa::defaulttype::Vec< N, real >::norm2(), sofa::component::collision::Point::p(), and testValidity().
Reimplemented from sofa::component::collision::DiscreteIntersection.
Definition at line 92 of file LocalMinDistance.cpp.
References getAlarmDistance(), sofa::core::TCollisionElementIterator< TModel >::getProximity(), sofa::component::collision::Cube::maxVect(), and sofa::component::collision::Cube::minVect().
| bool sofa::component::collision::LocalMinDistance::testValidity | ( | Triangle & | t, | |
| const Vector3 & | PQ | |||
| ) |
Definition at line 956 of file LocalMinDistance.cpp.
References cross(), sofa::component::collision::Triangle::p1(), sofa::component::collision::Triangle::p2(), and sofa::component::collision::Triangle::p3().
Definition at line 891 of file LocalMinDistance.cpp.
References angleCone, coneFactor, cross(), sofa::core::TCollisionElementIterator< TModel >::getCollisionModel(), sofa::core::BaseCollisionElementIterator::getIndex(), sofa::core::componentmodel::topology::BaseMeshTopology::getTriangle(), sofa::core::componentmodel::topology::BaseMeshTopology::getTriangleEdgeShell(), sofa::core::objectmodel::Data< T >::getValue(), sofa::defaulttype::Vec< N, real >::norm(), sofa::defaulttype::Vec< N, real >::normalize(), sofa::component::collision::Line::p1(), and sofa::component::collision::Line::p2().
These methods check the validity of a found intersection.
According to the local configuration around the found intersected primitive, we build a "Region Of Interest" geometric cone. Pertinent intersections have to belong to this cone, others are not taking into account anymore.
Definition at line 836 of file LocalMinDistance.cpp.
References angleCone, coneFactor, cross(), dot(), sofa::core::TCollisionElementIterator< TModel >::getCollisionModel(), sofa::core::componentmodel::topology::BaseMeshTopology::getEdge(), sofa::core::componentmodel::topology::BaseMeshTopology::getEdgeVertexShell(), sofa::core::BaseCollisionElementIterator::getIndex(), sofa::core::componentmodel::topology::BaseMeshTopology::getTriangle(), sofa::core::componentmodel::topology::BaseMeshTopology::getTriangleVertexShell(), sofa::core::objectmodel::Data< T >::getValue(), sofa::defaulttype::Vec< N, real >::norm(), sofa::defaulttype::Vec< N, real >::normalize(), and sofa::component::collision::Point::p().
Referenced by computeIntersection(), and testIntersection().
| virtual bool sofa::component::collision::LocalMinDistance::useProximity | ( | ) | const [inline, virtual] |
returns true if algorithm uses proximity
Reimplemented from sofa::core::componentmodel::collision::Intersection.
Definition at line 63 of file LocalMinDistance.h.
Definition at line 51 of file LocalMinDistance.h.
Referenced by getAlarmDistance(), and setAlarmDistance().
Definition at line 52 of file LocalMinDistance.h.
Referenced by getContactDistance(), and setContactDistance().
double sofa::component::collision::LocalMinDistance::mainAlarmDistance [private] |
Definition at line 111 of file LocalMinDistance.h.
double sofa::component::collision::LocalMinDistance::mainContactDistance [private] |
Definition at line 112 of file LocalMinDistance.h.
1.5.7.1