#include <TriangleModel.h>


Data Structures | |
| struct | TriangleInfo |
Public Types | |
| enum | TriangleFlag { FLAG_P1 = 1<<0, FLAG_P2 = 1<<1, FLAG_P3 = 1<<2, FLAG_E12 = 1<<3, FLAG_E23 = 1<<4, FLAG_E31 = 1<<5, FLAG_POINTS = FLAG_P1|FLAG_P2|FLAG_P3, FLAG_EDGES = FLAG_E12|FLAG_E23|FLAG_E31 } |
| typedef Vec3Types | InDataTypes |
| typedef Vec3Types | DataTypes |
| typedef DataTypes::VecCoord | VecCoord |
| typedef DataTypes::VecDeriv | VecDeriv |
| typedef DataTypes::Coord | Coord |
| typedef DataTypes::Deriv | Deriv |
| typedef Triangle | Element |
Public Member Functions | |
| TriangleModel () | |
| 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. | |
| core::componentmodel::behavior::MechanicalState < Vec3Types > * | getMechanicalState () |
| void | buildOctree () |
Protected Member Functions | |
| virtual void | updateFromTopology () |
| virtual void | updateFlags (int ntri=-1) |
| virtual void | updateNormals () |
Protected Attributes | |
| sofa::helper::vector < TriangleInfo > | elems |
| const sofa::core::componentmodel::topology::BaseMeshTopology::SeqTriangles * | triangles |
| sofa::core::componentmodel::topology::BaseMeshTopology::SeqTriangles | mytriangles |
| bool | needsUpdate |
| core::componentmodel::behavior::MechanicalState < Vec3Types > * | mstate |
| Data< bool > | computeNormals |
| int | meshRevision |
| sofa::core::componentmodel::topology::BaseMeshTopology * | _topology |
Friends | |
| class | Triangle |
Definition at line 76 of file TriangleModel.h.
Definition at line 83 of file TriangleModel.h.
Definition at line 80 of file TriangleModel.h.
Definition at line 84 of file TriangleModel.h.
Definition at line 85 of file TriangleModel.h.
Definition at line 79 of file TriangleModel.h.
Definition at line 81 of file TriangleModel.h.
Definition at line 82 of file TriangleModel.h.
| FLAG_P1 | Point 1 is attached to this triangle. |
| FLAG_P2 | Point 2 is attached to this triangle. |
| FLAG_P3 | Point 3 is attached to this triangle. |
| FLAG_E12 | Edge 1-2 is attached to this triangle. |
| FLAG_E23 | Edge 2-3 is attached to this triangle. |
| FLAG_E31 | Edge 3-1 is attached to this triangle. |
| FLAG_POINTS | |
| FLAG_EDGES |
Definition at line 88 of file TriangleModel.h.
| sofa::component::collision::TriangleModel::TriangleModel | ( | ) |
Definition at line 63 of file TriangleModel.cpp.
| void sofa::component::collision::TriangleModel::buildOctree | ( | ) |
Reimplemented in sofa::component::collision::TriangleOctreeModel.
Definition at line 659 of file TriangleModel.cpp.
| void sofa::component::collision::TriangleModel::computeBoundingTree | ( | int | maxDepth = 0 |
) | [virtual] |
Create or update the bounding volume hierarchy.
Implements sofa::core::CollisionModel.
Reimplemented in sofa::component::collision::TriangleOctreeModel.
Definition at line 508 of file TriangleModel.cpp.
References sofa::core::CollisionModel::begin(), sofa::component::collision::CubeModel::computeBoundingTree(), computeNormals, cross(), sofa::core::CollisionModel::empty(), sofa::core::CollisionModel::end(), sofa::core::objectmodel::Data< T >::getValue(), sofa::core::CollisionModel::isMoving(), mstate, sofa::component::collision::Triangle::n(), needsUpdate, sofa::component::collision::Triangle::p1Index(), sofa::component::collision::Triangle::p2Index(), sofa::component::collision::Triangle::p3Index(), sofa::component::collision::CubeModel::resize(), sofa::component::collision::CubeModel::setLeafCube(), sofa::component::collision::CubeModel::setParentOf(), sofa::core::CollisionModel::size, and updateFromTopology().
Referenced by sofa::component::collision::CarvingManager::doCarve().
| void sofa::component::collision::TriangleModel::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.
Reimplemented in sofa::component::collision::TriangleOctreeModel.
Definition at line 609 of file TriangleModel.cpp.
References sofa::component::collision::CubeModel::computeBoundingTree(), cross(), sofa::core::CollisionModel::empty(), sofa::core::CollisionModel::isMoving(), sofa::component::collision::Triangle::n(), needsUpdate, sofa::component::collision::Triangle::p1(), sofa::component::collision::Triangle::p2(), sofa::component::collision::Triangle::p3(), sofa::component::collision::CubeModel::resize(), sofa::component::collision::CubeModel::setParentOf(), sofa::core::CollisionModel::size, updateFromTopology(), sofa::component::collision::Triangle::v1(), sofa::component::collision::Triangle::v2(), and sofa::component::collision::Triangle::v3().
Referenced by sofa::component::collision::CarvingManager::doCarve().
| void sofa::component::collision::TriangleModel::draw | ( | ) | [virtual] |
Render the whole collision model.
Reimplemented from sofa::core::CollisionModel.
Reimplemented in sofa::component::collision::TriangleOctreeModel.
Definition at line 476 of file TriangleModel.cpp.
References sofa::core::CollisionModel::draw(), sofa::core::CollisionModel::getColor4f(), sofa::core::objectmodel::BaseObject::getContext(), sofa::core::CollisionModel::getPrevious(), and sofa::core::CollisionModel::size.
| void sofa::component::collision::TriangleModel::draw | ( | int | ) | [virtual] |
Render an collision element.
Reimplemented from sofa::core::CollisionModel.
Definition at line 465 of file TriangleModel.cpp.
References sofa::helper::gl::glNormalT(), sofa::helper::gl::glVertexT(), sofa::component::collision::Triangle::n(), sofa::component::collision::Triangle::p1(), sofa::component::collision::Triangle::p2(), and sofa::component::collision::Triangle::p3().
| core::componentmodel::behavior::MechanicalState<Vec3Types>* sofa::component::collision::TriangleModel::getMechanicalState | ( | ) | [inline] |
| void sofa::component::collision::TriangleModel::handleTopologyChange | ( | ) | [virtual] |
Handle topological Changes.
Reimplemented from sofa::core::objectmodel::BaseObject.
Definition at line 222 of file TriangleModel.cpp.
References _topology, elems, sofa::core::componentmodel::topology::ENDING_EVENT, sofa::core::componentmodel::topology::BaseMeshTopology::firstChange(), sofa::core::objectmodel::BaseContext::get(), sofa::core::objectmodel::BaseObject::getContext(), sofa::component::topology::TrianglesAdded::getNbAddedTriangles(), sofa::core::componentmodel::topology::Topology::getNbPoints(), sofa::core::componentmodel::topology::BaseMeshTopology::getNbTriangles(), sofa::core::componentmodel::topology::BaseMeshTopology::getTriangleVertexShell(), sofa::core::componentmodel::topology::BaseMeshTopology::lastChange(), mytriangles, needsUpdate, sofa::core::componentmodel::topology::POINTSREMOVED, sofa::core::componentmodel::topology::POINTSRENUMBERING, resize(), sofa::component::topology::TrianglesAdded::triangleArray, triangles, sofa::core::componentmodel::topology::TRIANGLESADDED, sofa::core::componentmodel::topology::TRIANGLESREMOVED, updateFlags(), and updateNormals().
| void sofa::component::collision::TriangleModel::init | ( | void | ) | [virtual] |
Initialization method called at graph modification, during bottom-up traversal.
Reimplemented from sofa::core::objectmodel::BaseObject.
Definition at line 77 of file TriangleModel.cpp.
References _topology, sofa::core::objectmodel::BaseObject::getContext(), sofa::core::objectmodel::BaseContext::getMechanicalState(), sofa::core::objectmodel::BaseContext::getMeshTopology(), sofa::core::componentmodel::topology::BaseMeshTopology::getNbTriangles(), sofa::core::componentmodel::topology::BaseMeshTopology::getTriangles(), mstate, resize(), triangles, updateFromTopology(), and updateNormals().
Referenced by sofa::filemanager::pml::PMLStiffSpringForceField::createCollisionModel(), sofa::filemanager::pml::PMLRigidBody::createCollisionModel(), and sofa::filemanager::pml::PMLFemForceField::createCollisionModel().
| void sofa::component::collision::TriangleModel::resize | ( | int | s | ) | [virtual] |
Set the number of elements.
Reimplemented from sofa::core::CollisionModel.
Definition at line 71 of file TriangleModel.cpp.
References elems.
Referenced by handleTopologyChange(), init(), and updateFromTopology().
| void sofa::component::collision::TriangleModel::updateFlags | ( | int | ntri = -1 |
) | [protected, virtual] |
Definition at line 180 of file TriangleModel.cpp.
References elems, FLAG_E12, FLAG_E23, FLAG_E31, FLAG_P1, FLAG_P2, FLAG_P3, mstate, and triangles.
Referenced by handleTopologyChange(), and updateFromTopology().
| void sofa::component::collision::TriangleModel::updateFromTopology | ( | ) | [protected, virtual] |
Definition at line 117 of file TriangleModel.cpp.
References _topology, sofa::core::componentmodel::topology::BaseMeshTopology::getNbQuads(), sofa::core::componentmodel::topology::BaseMeshTopology::getNbTriangles(), sofa::core::componentmodel::topology::BaseMeshTopology::getQuad(), sofa::core::componentmodel::topology::BaseMeshTopology::getRevision(), sofa::core::componentmodel::topology::BaseMeshTopology::getTriangle(), sofa::core::componentmodel::topology::BaseMeshTopology::getTriangles(), meshRevision, mstate, mytriangles, needsUpdate, resize(), sofa::core::CollisionModel::size, triangles, and updateFlags().
Referenced by sofa::component::collision::TriangleOctreeModel::computeBoundingTree(), computeBoundingTree(), computeContinuousBoundingTree(), and init().
| void sofa::component::collision::TriangleModel::updateNormals | ( | ) | [protected, virtual] |
Definition at line 103 of file TriangleModel.cpp.
References cross(), sofa::component::collision::Triangle::n(), sofa::component::collision::Triangle::p1(), sofa::component::collision::Triangle::p2(), sofa::component::collision::Triangle::p3(), and sofa::core::CollisionModel::size.
Referenced by handleTopologyChange(), and init().
friend class Triangle [friend] |
Definition at line 86 of file TriangleModel.h.
sofa::core::componentmodel::topology::BaseMeshTopology* sofa::component::collision::TriangleModel::_topology [protected] |
Definition at line 121 of file TriangleModel.h.
Referenced by handleTopologyChange(), init(), and updateFromTopology().
Definition at line 107 of file TriangleModel.h.
Referenced by sofa::component::collision::TriangleOctreeModel::buildOctree(), handleTopologyChange(), resize(), and updateFlags().
core::componentmodel::behavior::MechanicalState<Vec3Types>* sofa::component::collision::TriangleModel::mstate [protected] |
Definition at line 117 of file TriangleModel.h.
Referenced by sofa::component::collision::TriangleOctreeModel::computeBoundingTree(), computeBoundingTree(), getMechanicalState(), init(), updateFlags(), and updateFromTopology().
sofa::core::componentmodel::topology::BaseMeshTopology::SeqTriangles sofa::component::collision::TriangleModel::mytriangles [protected] |
Definition at line 110 of file TriangleModel.h.
Referenced by handleTopologyChange(), and updateFromTopology().
Definition at line 112 of file TriangleModel.h.
Referenced by computeBoundingTree(), computeContinuousBoundingTree(), handleTopologyChange(), and updateFromTopology().
const sofa::core::componentmodel::topology::BaseMeshTopology::SeqTriangles* sofa::component::collision::TriangleModel::triangles [protected] |
Definition at line 108 of file TriangleModel.h.
Referenced by sofa::component::collision::TriangleOctreeModel::computeBoundingTree(), handleTopologyChange(), init(), updateFlags(), and updateFromTopology().
1.5.7.1