#include <LineModel.h>


Data Structures | |
| struct | LineData |
Public Types | |
| typedef Vec3Types | InDataTypes |
| typedef Vec3Types | DataTypes |
| typedef DataTypes::VecCoord | VecCoord |
| typedef DataTypes::VecDeriv | VecDeriv |
| typedef DataTypes::Coord | Coord |
| typedef DataTypes::Deriv | Deriv |
| typedef Line | Element |
Public Member Functions | |
| LineModel () | |
| virtual void | init () |
| Initialization method called at graph modification, during bottom-up traversal. | |
| virtual void | resize (int size) |
| Set the number of elements. | |
| virtual void | computeBoundingTree (int maxDepth=0) |
| Create or update the bounding volume hierarchy. | |
| virtual void | computeContinuousBoundingTree (double dt, int maxDepth=0) |
| Create or update the bounding volume hierarchy, accounting for motions within the given timestep. | |
| void | draw (int index) |
| Render an collision element. | |
| void | draw () |
| Render the whole collision model. | |
| virtual void | handleTopologyChange () |
| Handle topological Changes. | |
| bool | canCollideWithElement (int index, CollisionModel *model2, int index2) |
| Test if two elements can collide with each other. | |
| core::componentmodel::behavior::MechanicalState < Vec3Types > * | getMechanicalState () |
Protected Member Functions | |
| virtual void | updateFromTopology () |
Protected Attributes | |
| sofa::helper::vector< LineData > | elems |
| bool | needsUpdate |
| core::componentmodel::behavior::MechanicalState < Vec3Types > * | mstate |
| Topology * | topology |
| PointModel * | mpoints |
| int | meshRevision |
Friends | |
| class | Line |
Definition at line 71 of file LineModel.h.
Definition at line 91 of file LineModel.h.
Definition at line 88 of file LineModel.h.
Definition at line 92 of file LineModel.h.
Definition at line 93 of file LineModel.h.
Definition at line 87 of file LineModel.h.
Definition at line 89 of file LineModel.h.
Definition at line 90 of file LineModel.h.
| sofa::component::collision::LineModel::LineModel | ( | ) |
Definition at line 62 of file LineModel.cpp.
| bool sofa::component::collision::LineModel::canCollideWithElement | ( | int | , | |
| CollisionModel * | , | |||
| int | ||||
| ) | [virtual] |
Test if two elements can collide with each other.
This method should be implemented by models supporting self-collisions to prune tests between adjacent elements.
Default to true. Note that this method assumes that canCollideWith(model2) was already used to test if the collision models can collide.
Reimplemented from sofa::core::CollisionModel.
Definition at line 389 of file LineModel.cpp.
References sofa::core::CollisionModel::bSelfCollision, sofa::core::CollisionModel::canCollideWithElement(), elems, sofa::core::objectmodel::BaseObject::getContext(), sofa::core::objectmodel::Data< T >::getValue(), and mpoints.
| void sofa::component::collision::LineModel::computeBoundingTree | ( | int | maxDepth = 0 |
) | [virtual] |
Create or update the bounding volume hierarchy.
Implements sofa::core::CollisionModel.
Definition at line 407 of file LineModel.cpp.
References sofa::component::collision::CubeModel::computeBoundingTree(), sofa::core::CollisionModel::empty(), sofa::core::CollisionModel::isMoving(), needsUpdate, sofa::component::collision::Line::p1(), sofa::component::collision::Line::p2(), sofa::component::collision::CubeModel::resize(), sofa::component::collision::CubeModel::setParentOf(), sofa::core::CollisionModel::size, and updateFromTopology().
| void sofa::component::collision::LineModel::computeContinuousBoundingTree | ( | double | , | |
| int | maxDepth = 0 | |||
| ) | [virtual] |
Create or update the bounding volume hierarchy, accounting for motions within the given timestep.
Default to computeBoundingTree().
Reimplemented from sofa::core::CollisionModel.
Definition at line 441 of file LineModel.cpp.
References sofa::component::collision::CubeModel::computeBoundingTree(), sofa::core::CollisionModel::empty(), sofa::core::CollisionModel::isMoving(), needsUpdate, sofa::component::collision::Line::p1(), sofa::component::collision::Line::p2(), sofa::component::collision::CubeModel::resize(), sofa::component::collision::CubeModel::setParentOf(), sofa::core::CollisionModel::size, updateFromTopology(), sofa::component::collision::Line::v1(), and sofa::component::collision::Line::v2().
| void sofa::component::collision::LineModel::draw | ( | ) | [virtual] |
Render the whole collision model.
Reimplemented from sofa::core::CollisionModel.
Definition at line 364 of file LineModel.cpp.
References sofa::core::CollisionModel::draw(), elems, sofa::core::CollisionModel::getColor4f(), sofa::core::objectmodel::BaseObject::getContext(), sofa::core::CollisionModel::getPrevious(), and sofa::core::CollisionModel::size.
| void sofa::component::collision::LineModel::draw | ( | int | ) | [virtual] |
Render an collision element.
Reimplemented from sofa::core::CollisionModel.
Definition at line 355 of file LineModel.cpp.
References sofa::helper::gl::glVertexT(), sofa::component::collision::Line::p1(), and sofa::component::collision::Line::p2().
| core::componentmodel::behavior::MechanicalState<Vec3Types>* sofa::component::collision::LineModel::getMechanicalState | ( | ) | [inline] |
| void sofa::component::collision::LineModel::handleTopologyChange | ( | ) | [virtual] |
Handle topological Changes.
Reimplemented from sofa::core::objectmodel::BaseObject.
Definition at line 113 of file LineModel.cpp.
References sofa::component::topology::EdgesAdded::edgeArray, sofa::core::componentmodel::topology::EDGESADDED, sofa::core::componentmodel::topology::EDGESREMOVED, elems, sofa::core::componentmodel::topology::ENDING_EVENT, sofa::core::componentmodel::topology::BaseMeshTopology::firstChange(), sofa::core::objectmodel::BaseObject::getContext(), sofa::core::componentmodel::topology::BaseMeshTopology::getEdge(), sofa::core::componentmodel::topology::BaseMeshTopology::getEdgeVertexShell(), sofa::core::objectmodel::BaseContext::getMeshTopology(), sofa::component::topology::EdgesAdded::getNbAddedEdges(), sofa::core::componentmodel::topology::BaseMeshTopology::getNbEdges(), sofa::core::componentmodel::topology::Topology::getNbPoints(), sofa::core::componentmodel::topology::BaseMeshTopology::lastChange(), needsUpdate, sofa::core::componentmodel::topology::POINTSREMOVED, sofa::core::componentmodel::topology::POINTSRENUMBERING, and resize().
| void sofa::component::collision::LineModel::init | ( | void | ) | [virtual] |
Initialization method called at graph modification, during bottom-up traversal.
Reimplemented from sofa::core::objectmodel::BaseObject.
Definition at line 83 of file LineModel.cpp.
References elems, sofa::core::objectmodel::BaseContext::get(), sofa::core::objectmodel::BaseObject::getContext(), sofa::core::componentmodel::topology::BaseMeshTopology::getEdge(), sofa::core::objectmodel::BaseContext::getMechanicalState(), sofa::core::objectmodel::BaseContext::getMeshTopology(), sofa::core::componentmodel::topology::BaseMeshTopology::getNbEdges(), mpoints, mstate, resize(), and updateFromTopology().
| void sofa::component::collision::LineModel::resize | ( | int | s | ) | [virtual] |
Set the number of elements.
Reimplemented from sofa::core::CollisionModel.
Definition at line 77 of file LineModel.cpp.
References elems.
Referenced by handleTopologyChange(), init(), and updateFromTopology().
| void sofa::component::collision::LineModel::updateFromTopology | ( | ) | [protected, virtual] |
Definition at line 319 of file LineModel.cpp.
References elems, sofa::core::objectmodel::BaseObject::getContext(), sofa::core::componentmodel::topology::BaseMeshTopology::getEdge(), sofa::core::objectmodel::BaseContext::getMeshTopology(), sofa::core::componentmodel::topology::BaseMeshTopology::getNbEdges(), sofa::core::componentmodel::topology::BaseMeshTopology::getRevision(), meshRevision, mstate, needsUpdate, and resize().
Referenced by computeBoundingTree(), computeContinuousBoundingTree(), and init().
friend class Line [friend] |
Definition at line 95 of file LineModel.h.
Definition at line 81 of file LineModel.h.
Referenced by canCollideWithElement(), draw(), handleTopologyChange(), init(), resize(), and updateFromTopology().
PointModel* sofa::component::collision::LineModel::mpoints [protected] |
core::componentmodel::behavior::MechanicalState<Vec3Types>* sofa::component::collision::LineModel::mstate [protected] |
Definition at line 123 of file LineModel.h.
Referenced by getMechanicalState(), init(), and updateFromTopology().
Definition at line 82 of file LineModel.h.
Referenced by computeBoundingTree(), computeContinuousBoundingTree(), handleTopologyChange(), and updateFromTopology().
Topology* sofa::component::collision::LineModel::topology [protected] |
Definition at line 124 of file LineModel.h.
1.5.7.1