sofa::component::collision::CubeModel Class Reference

#include <CubeModel.h>

Inheritance diagram for sofa::component::collision::CubeModel:

Inheritance graph
[legend]
Collaboration diagram for sofa::component::collision::CubeModel:

Collaboration graph
[legend]

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

Detailed Description

Definition at line 59 of file CubeModel.h.


Member Typedef Documentation

Definition at line 76 of file CubeModel.h.

Definition at line 77 of file CubeModel.h.

Definition at line 78 of file CubeModel.h.


Constructor & Destructor Documentation

sofa::component::collision::CubeModel::CubeModel (  ) 

Definition at line 49 of file CubeModel.cpp.


Member Function Documentation

int sofa::component::collision::CubeModel::addCube ( Cube  subcellsBegin,
Cube  subcellsEnd 
)

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]

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]

Definition at line 91 of file CubeModel.h.

References elems.

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.

int sofa::component::collision::CubeModel::getLeafEndIndex ( int  index  )  const [inline]

Definition at line 105 of file CubeModel.h.

References elems.

int sofa::component::collision::CubeModel::getLeafIndex ( int  index  )  const [inline]

Definition at line 100 of file CubeModel.h.

References elems.

unsigned int sofa::component::collision::CubeModel::getNumberCells (  )  [inline]

Definition at line 89 of file CubeModel.h.

References elems.

bool sofa::component::collision::CubeModel::isLeaf ( int   )  const [virtual]

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]

void sofa::component::collision::CubeModel::setLeafCube ( int  cubeIndex,
std::pair< core::CollisionElementIterator, core::CollisionElementIterator >  children,
const Vector3 &  min,
const Vector3 &  max 
)

void sofa::component::collision::CubeModel::setParentOf ( int  childIndex,
const Vector3 &  min,
const Vector3 &  max 
)

void sofa::component::collision::CubeModel::updateCube ( int  index  ) 

void sofa::component::collision::CubeModel::updateCubes (  ) 

Definition at line 129 of file CubeModel.cpp.

References sofa::core::CollisionModel::size, and updateCube().


Friends And Related Function Documentation

friend class Cube [friend]

Definition at line 79 of file CubeModel.h.

Referenced by computeBoundingTree().


Field Documentation

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().


The documentation for this class was generated from the following files:

Generated on Sun Nov 23 04:17:24 2008 for Sofa by  doxygen 1.5.7.1