#include <CubeModel.h>


Data Structures | |
| struct | CubeData |
| class | CubeSortPredicate |
Public Types | |
| typedef core::CollisionElementIterator | ChildIterator |
| typedef Vec3Types | DataTypes |
| typedef Cube | Element |
Public Member Functions | |
| CubeModel () | |
| virtual void | resize (int size) |
| Set the number of elements. | |
| void | setParentOf (int childIndex, const Vector3 &min, const Vector3 &max) |
| void | setLeafCube (int cubeIndex, std::pair< core::CollisionElementIterator, core::CollisionElementIterator > children, const Vector3 &min, const Vector3 &max) |
| unsigned int | getNumberCells () |
| void | getBoundingTree (sofa::helper::vector< std::pair< Vector3, Vector3 > > &bounding) |
| int | getLeafIndex (int index) const |
| int | getLeafEndIndex (int index) const |
| virtual void | computeBoundingTree (int maxDepth=0) |
| Create or update the bounding volume hierarchy. | |
| virtual std::pair < core::CollisionElementIterator, core::CollisionElementIterator > | getInternalChildren (int index) const |
| Return the list (as a pair of iterators) of internal children of an element. | |
| virtual std::pair < core::CollisionElementIterator, core::CollisionElementIterator > | getExternalChildren (int index) const |
| Return the list (as a pair of iterators) of external children of an element. | |
| virtual bool | isLeaf (int index) const |
| Checks if the element(index) is a leaf and a primitive of the collision model. | |
| void | draw (int index) |
| Render an collision element. | |
| void | draw () |
| Render the whole collision model. | |
| int | addCube (Cube subcellsBegin, Cube subcellsEnd) |
| void | updateCube (int index) |
| void | updateCubes () |
Protected Attributes | |
| sofa::helper::vector< CubeData > | elems |
| sofa::helper::vector< int > | parentOf |
| Given the index of a child leaf element, store the index of the parent cube. | |
Friends | |
| class | Cube |
Definition at line 59 of file CubeModel.h.
Definition at line 76 of file CubeModel.h.
Definition at line 77 of file CubeModel.h.
Definition at line 78 of file CubeModel.h.
| sofa::component::collision::CubeModel::CubeModel | ( | ) |
Definition at line 49 of file CubeModel.cpp.
Definition at line 90 of file CubeModel.cpp.
References elems, resize(), sofa::core::CollisionModel::size, and updateCube().
Referenced by sofa::component::collision::SpatialGridPointModel::computeBoundingTree(), and computeBoundingTree().
| void sofa::component::collision::CubeModel::computeBoundingTree | ( | int | maxDepth = 0 |
) | [virtual] |
Create or update the bounding volume hierarchy.
Implements sofa::core::CollisionModel.
Definition at line 263 of file CubeModel.cpp.
References addCube(), sofa::core::CollisionModel::begin(), Cube, elems, sofa::core::CollisionModel::empty(), sofa::core::CollisionModel::end(), sofa::core::CollisionModel::getPrevious(), parentOf, sofa::core::CollisionModel::resize(), sofa::core::CollisionModel::setPrevious(), and sofa::core::CollisionModel::size.
Referenced by sofa::gpu::cuda::CudaPointModel::computeBoundingTree(), sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel::computeBoundingTree(), sofa::component::collision::TriangleOctreeModel::computeBoundingTree(), sofa::component::collision::TriangleModel::computeBoundingTree(), sofa::component::collision::TetrahedronModel::computeBoundingTree(), sofa::component::collision::TSphereModel< TDataTypes >::computeBoundingTree(), sofa::component::collision::RayModel::computeBoundingTree(), sofa::component::collision::PointModel::computeBoundingTree(), sofa::component::collision::LineModel::computeBoundingTree(), sofa::component::collision::FFDDistanceGridCollisionModel::computeBoundingTree(), sofa::component::collision::RigidDistanceGridCollisionModel::computeBoundingTree(), sofa::component::collision::TriangleModel::computeContinuousBoundingTree(), sofa::component::collision::TSphereModel< TDataTypes >::computeContinuousBoundingTree(), sofa::component::collision::PointModel::computeContinuousBoundingTree(), and sofa::component::collision::LineModel::computeContinuousBoundingTree().
| void sofa::component::collision::CubeModel::draw | ( | ) | [virtual] |
Render the whole collision model.
Reimplemented from sofa::core::CollisionModel.
Definition at line 172 of file CubeModel.cpp.
References sofa::core::CollisionModel::color, sofa::core::CollisionModel::draw(), sofa::core::objectmodel::BaseObject::getContext(), sofa::core::CollisionModel::getNext(), sofa::core::CollisionModel::getPrevious(), sofa::core::CollisionModel::isActive(), sofa::core::CollisionModel::isSimulated(), and sofa::core::CollisionModel::size.
| void sofa::component::collision::CubeModel::draw | ( | int | ) | [virtual] |
Render an collision element.
Reimplemented from sofa::core::CollisionModel.
Definition at line 135 of file CubeModel.cpp.
References elems.
| void sofa::component::collision::CubeModel::getBoundingTree | ( | sofa::helper::vector< std::pair< Vector3, Vector3 > > & | bounding | ) | [inline] |
| std::pair< core::CollisionElementIterator, core::CollisionElementIterator > sofa::component::collision::CubeModel::getExternalChildren | ( | int | ) | const [virtual] |
Return the list (as a pair of iterators) of external children of an element.
External children are child elements of a different type than their parent (often corresponding to the final elements).
Default to empty (i.e. two identical iterators)
Reimplemented from sofa::core::CollisionModel.
Definition at line 213 of file CubeModel.cpp.
References elems.
| std::pair< core::CollisionElementIterator, core::CollisionElementIterator > sofa::component::collision::CubeModel::getInternalChildren | ( | int | ) | const [virtual] |
Return the list (as a pair of iterators) of internal children of an element.
Internal children are child elements of the same type as their parent (often corresponding to non-final elements). This distinction is used to optimize the intersection tests inside the hierarchy, as internal children can be processed without dynamically retrieving a new intersection method.
Default to empty (i.e. two identical iterators)
Reimplemented from sofa::core::CollisionModel.
Definition at line 208 of file CubeModel.cpp.
References elems.
| unsigned int sofa::component::collision::CubeModel::getNumberCells | ( | ) | [inline] |
Checks if the element(index) is a leaf and a primitive of the collision model.
Default to true since triangle model, line model, etc. does not have this method implemented and they are themselves (normally) leaves and primitives
Reimplemented from sofa::core::CollisionModel.
Definition at line 230 of file CubeModel.cpp.
References elems.
| void sofa::component::collision::CubeModel::resize | ( | int | s | ) | [virtual] |
Set the number of elements.
Reimplemented from sofa::core::CollisionModel.
Definition at line 53 of file CubeModel.cpp.
References elems, sofa::core::CollisionModel::getNext(), sofa::core::CollisionModel::getPrevious(), parentOf, and sofa::core::CollisionModel::resize().
Referenced by addCube(), sofa::gpu::cuda::CudaPointModel::computeBoundingTree(), sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel::computeBoundingTree(), sofa::component::collision::TriangleOctreeModel::computeBoundingTree(), sofa::component::collision::TriangleModel::computeBoundingTree(), sofa::component::collision::TetrahedronModel::computeBoundingTree(), sofa::component::collision::TSphereModel< TDataTypes >::computeBoundingTree(), sofa::component::collision::SpatialGridPointModel::computeBoundingTree(), sofa::component::collision::RayModel::computeBoundingTree(), sofa::component::collision::PointModel::computeBoundingTree(), sofa::component::collision::LineModel::computeBoundingTree(), sofa::component::collision::FFDDistanceGridCollisionModel::computeBoundingTree(), sofa::component::collision::RigidDistanceGridCollisionModel::computeBoundingTree(), sofa::component::collision::TriangleModel::computeContinuousBoundingTree(), sofa::component::collision::TSphereModel< TDataTypes >::computeContinuousBoundingTree(), sofa::component::collision::PointModel::computeContinuousBoundingTree(), and sofa::component::collision::LineModel::computeContinuousBoundingTree().
| void sofa::component::collision::CubeModel::setLeafCube | ( | int | cubeIndex, | |
| std::pair< core::CollisionElementIterator, core::CollisionElementIterator > | children, | |||
| const Vector3 & | min, | |||
| const Vector3 & | max | |||
| ) |
Definition at line 83 of file CubeModel.cpp.
References elems.
Referenced by sofa::component::collision::TriangleModel::computeBoundingTree(), sofa::component::collision::TetrahedronModel::computeBoundingTree(), and sofa::component::collision::SpatialGridPointModel::computeBoundingTree().
| void sofa::component::collision::CubeModel::setParentOf | ( | int | childIndex, | |
| const Vector3 & | min, | |||
| const Vector3 & | max | |||
| ) |
Definition at line 76 of file CubeModel.cpp.
References elems, and parentOf.
Referenced by sofa::gpu::cuda::CudaPointModel::computeBoundingTree(), sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel::computeBoundingTree(), sofa::component::collision::TriangleOctreeModel::computeBoundingTree(), sofa::component::collision::TriangleModel::computeBoundingTree(), sofa::component::collision::TetrahedronModel::computeBoundingTree(), sofa::component::collision::TSphereModel< TDataTypes >::computeBoundingTree(), sofa::component::collision::RayModel::computeBoundingTree(), sofa::component::collision::PointModel::computeBoundingTree(), sofa::component::collision::LineModel::computeBoundingTree(), sofa::component::collision::FFDDistanceGridCollisionModel::computeBoundingTree(), sofa::component::collision::RigidDistanceGridCollisionModel::computeBoundingTree(), sofa::component::collision::TriangleModel::computeContinuousBoundingTree(), sofa::component::collision::TSphereModel< TDataTypes >::computeContinuousBoundingTree(), sofa::component::collision::PointModel::computeContinuousBoundingTree(), and sofa::component::collision::LineModel::computeContinuousBoundingTree().
| void sofa::component::collision::CubeModel::updateCube | ( | int | index | ) |
Definition at line 104 of file CubeModel.cpp.
References elems, sofa::component::collision::Cube::maxVect(), and sofa::component::collision::Cube::minVect().
Referenced by addCube(), and updateCubes().
| void sofa::component::collision::CubeModel::updateCubes | ( | ) |
Definition at line 129 of file CubeModel.cpp.
References sofa::core::CollisionModel::size, and updateCube().
friend class Cube [friend] |
Definition at line 70 of file CubeModel.h.
Referenced by addCube(), computeBoundingTree(), draw(), getBoundingTree(), getExternalChildren(), getInternalChildren(), getLeafEndIndex(), getLeafIndex(), getNumberCells(), isLeaf(), resize(), setLeafCube(), setParentOf(), and updateCube().
Given the index of a child leaf element, store the index of the parent cube.
Definition at line 73 of file CubeModel.h.
Referenced by computeBoundingTree(), resize(), and setParentOf().
1.5.7.1