Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Private Member Functions
btDbvt Struct Reference

#include <btDbvt.h>

List of all members.

Classes

struct  IClone
struct  ICollide
struct  IWriter
struct  sStkCLN
struct  sStkNN
struct  sStkNP
struct  sStkNPS

Public Types

enum  { SIMPLE_STACKSIZE = 64, DOUBLE_STACKSIZE = SIMPLE_STACKSIZE*2 }

Public Member Functions

 btDbvt ()
void clear ()
void clone (btDbvt &dest, IClone *iclone=0) const
DBVT_PREFIX void collideTT (const btDbvtNode *root0, const btDbvtNode *root1, DBVT_IPOLICY)
DBVT_PREFIX void collideTTpersistentStack (const btDbvtNode *root0, const btDbvtNode *root1, DBVT_IPOLICY)
DBVT_PREFIX void collideTV (const btDbvtNode *root, const btDbvtVolume &volume, DBVT_IPOLICY)
bool empty () const
btDbvtNodeinsert (const btDbvtVolume &box, void *data)
void optimizeBottomUp ()
void optimizeIncremental (int passes)
void optimizeTopDown (int bu_treshold=128)
DBVT_PREFIX void rayTestInternal (const btDbvtNode *root, const btVector3 &rayFrom, const btVector3 &rayTo, const btVector3 &rayDirectionInverse, unsigned int signs[3], btScalar lambda_max, const btVector3 &aabbMin, const btVector3 &aabbMax, DBVT_IPOLICY) const
void remove (btDbvtNode *leaf)
void update (btDbvtNode *leaf, int lookahead=-1)
void update (btDbvtNode *leaf, btDbvtVolume &volume)
bool update (btDbvtNode *leaf, btDbvtVolume &volume, const btVector3 &velocity, btScalar margin)
bool update (btDbvtNode *leaf, btDbvtVolume &volume, const btVector3 &velocity)
bool update (btDbvtNode *leaf, btDbvtVolume &volume, btScalar margin)
void write (IWriter *iwriter) const
 ~btDbvt ()

Static Public Member Functions

static DBVT_INLINE int allocate (btAlignedObjectArray< int > &ifree, btAlignedObjectArray< sStkNPS > &stock, const sStkNPS &value)
static void benchmark ()
static DBVT_PREFIX void collideKDOP (const btDbvtNode *root, const btVector3 *normals, const btScalar *offsets, int count, DBVT_IPOLICY)
static DBVT_PREFIX void collideOCL (const btDbvtNode *root, const btVector3 *normals, const btScalar *offsets, const btVector3 &sortaxis, int count, DBVT_IPOLICY, bool fullsort=true)
static DBVT_PREFIX void collideTU (const btDbvtNode *root, DBVT_IPOLICY)
static int countLeaves (const btDbvtNode *node)
static DBVT_PREFIX void enumLeaves (const btDbvtNode *root, DBVT_IPOLICY)
static DBVT_PREFIX void enumNodes (const btDbvtNode *root, DBVT_IPOLICY)
static void extractLeaves (const btDbvtNode *node, btAlignedObjectArray< const btDbvtNode * > &leaves)
static int maxdepth (const btDbvtNode *node)
static DBVT_INLINE int nearest (const int *i, const btDbvt::sStkNPS *a, btScalar v, int l, int h)
static DBVT_PREFIX void rayTest (const btDbvtNode *root, const btVector3 &rayFrom, const btVector3 &rayTo, DBVT_IPOLICY)

Public Attributes

btDbvtNodem_free
int m_leaves
int m_lkhd
unsigned m_opath
btDbvtNodem_root
btAlignedObjectArray< sStkNNm_stkStack

Private Member Functions

 btDbvt (const btDbvt &)

Detailed Description

The btDbvt class implements a fast dynamic bounding volume tree based on axis aligned bounding boxes (aabb tree). This btDbvt is used for soft body collision detection and for the btDbvtBroadphase. It has a fast insert, remove and update of nodes. Unlike the btQuantizedBvh, nodes can be dynamically moved around, which allows for change in topology of the underlying data structure.

Definition at line 190 of file btDbvt.h.


Member Enumeration Documentation

anonymous enum
Enumerator:
SIMPLE_STACKSIZE 
DOUBLE_STACKSIZE 

Definition at line 248 of file btDbvt.h.


Constructor & Destructor Documentation

btDbvt::btDbvt ( const btDbvt ) [inline, private]

Definition at line 384 of file btDbvt.h.


Member Function Documentation

static DBVT_INLINE int btDbvt::allocate ( btAlignedObjectArray< int > &  ifree,
btAlignedObjectArray< sStkNPS > &  stock,
const sStkNPS value 
) [inline, static]

Definition at line 371 of file btDbvt.h.

static void btDbvt::benchmark ( ) [inline, static]

Definition at line 287 of file btDbvt.h.

void btDbvt::clear ( )
void btDbvt::clone ( btDbvt dest,
IClone iclone = 0 
) const
DBVT_PREFIX void btDbvt::collideKDOP ( const btDbvtNode root,
const btVector3 *  normals,
const btScalar offsets,
int  count,
DBVT_IPOLICY   
) [inline, static]

Definition at line 1062 of file btDbvt.h.

DBVT_PREFIX void btDbvt::collideOCL ( const btDbvtNode root,
const btVector3 *  normals,
const btScalar offsets,
const btVector3 &  sortaxis,
int  count,
DBVT_IPOLICY  ,
bool  fullsort = true 
) [inline, static]

Definition at line 1117 of file btDbvt.h.

DBVT_PREFIX void btDbvt::collideTT ( const btDbvtNode root0,
const btDbvtNode root1,
DBVT_IPOLICY   
) [inline]

Definition at line 710 of file btDbvt.h.

DBVT_PREFIX void btDbvt::collideTTpersistentStack ( const btDbvtNode root0,
const btDbvtNode root1,
DBVT_IPOLICY   
) [inline]

Definition at line 775 of file btDbvt.h.

DBVT_PREFIX void btDbvt::collideTU ( const btDbvtNode root,
DBVT_IPOLICY   
) [inline, static]

Definition at line 1215 of file btDbvt.h.

DBVT_PREFIX void btDbvt::collideTV ( const btDbvtNode root,
const btDbvtVolume volume,
DBVT_IPOLICY   
) [inline]

Definition at line 908 of file btDbvt.h.

static int btDbvt::countLeaves ( const btDbvtNode node) [static]
bool btDbvt::empty ( ) const [inline]

Definition at line 268 of file btDbvt.h.

DBVT_PREFIX void btDbvt::enumLeaves ( const btDbvtNode root,
DBVT_IPOLICY   
) [inline, static]

Definition at line 693 of file btDbvt.h.

DBVT_PREFIX void btDbvt::enumNodes ( const btDbvtNode root,
DBVT_IPOLICY   
) [inline, static]

Definition at line 679 of file btDbvt.h.

static void btDbvt::extractLeaves ( const btDbvtNode node,
btAlignedObjectArray< const btDbvtNode * > &  leaves 
) [static]
btDbvtNode* btDbvt::insert ( const btDbvtVolume box,
void *  data 
)
static int btDbvt::maxdepth ( const btDbvtNode node) [static]
static DBVT_INLINE int btDbvt::nearest ( const int *  i,
const btDbvt::sStkNPS a,
btScalar  v,
int  l,
int  h 
) [inline, static]

Definition at line 361 of file btDbvt.h.

void btDbvt::optimizeIncremental ( int  passes)
void btDbvt::optimizeTopDown ( int  bu_treshold = 128)
DBVT_PREFIX void btDbvt::rayTest ( const btDbvtNode root,
const btVector3 &  rayFrom,
const btVector3 &  rayTo,
DBVT_IPOLICY   
) [inline, static]

rayTest is a re-entrant ray test, and can be called in parallel as long as the btAlignedAlloc is thread-safe (uses locking etc) rayTest is slower than rayTestInternal, because it builds a local stack, using memory allocations, and it recomputes signs/rayDirectionInverses each time

what about division by zero? --> just set rayDirection[i] to INF/BT_LARGE_FLOAT

Definition at line 993 of file btDbvt.h.

DBVT_PREFIX void btDbvt::rayTestInternal ( const btDbvtNode root,
const btVector3 &  rayFrom,
const btVector3 &  rayTo,
const btVector3 &  rayDirectionInverse,
unsigned int  signs[3],
btScalar  lambda_max,
const btVector3 &  aabbMin,
const btVector3 &  aabbMax,
DBVT_IPOLICY   
) const [inline]

rayTestInternal is faster than rayTest, because it uses a persistent stack (to reduce dynamic memory allocations to a minimum) and it uses precomputed signs/rayInverseDirections rayTestInternal is used by btDbvtBroadphase to accelerate world ray casts

Definition at line 940 of file btDbvt.h.

void btDbvt::remove ( btDbvtNode leaf)
void btDbvt::update ( btDbvtNode leaf,
int  lookahead = -1 
)
void btDbvt::update ( btDbvtNode leaf,
btDbvtVolume volume 
)
bool btDbvt::update ( btDbvtNode leaf,
btDbvtVolume volume,
const btVector3 &  velocity,
btScalar  margin 
)
bool btDbvt::update ( btDbvtNode leaf,
btDbvtVolume volume,
const btVector3 &  velocity 
)
bool btDbvt::update ( btDbvtNode leaf,
btDbvtVolume volume,
btScalar  margin 
)
void btDbvt::write ( IWriter iwriter) const

Member Data Documentation

Definition at line 255 of file btDbvt.h.

Definition at line 257 of file btDbvt.h.

Definition at line 256 of file btDbvt.h.

unsigned btDbvt::m_opath

Definition at line 258 of file btDbvt.h.

Definition at line 254 of file btDbvt.h.

Definition at line 261 of file btDbvt.h.


The documentation for this struct was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines


bullet
Author(s): Erwin Coumans, ROS package maintained by Tully Foote
autogenerated on Wed Oct 31 2012 07:54:32