ADORe
ADORe is a modular open source software library and toolkit for decision making, planning, control and simulation of automated vehicles
adore::mad::BoundingVolumes::OBBTree3d Class Reference

#include <boundingvolumes.h>

Collaboration diagram for adore::mad::BoundingVolumes::OBBTree3d:
Collaboration graph

Public Member Functions

 OBBTree3d ()
 
 ~OBBTree3d ()
 
void setBox (OBB3d *box)
 
void setChild (OBBTree3d *child)
 
void setSibling (OBBTree3d *sibling)
 
void copy (OBBTree3d *other)
 
void rotateZ (float cos, float sin, int istart=0)
 
void translate (float *t)
 
OBBTree3dgetSibling ()
 
OBBTree3dgetChild ()
 
OBB3dgetBox ()
 
void transform_forwards (float cos_psi, float sin_psi, float dx, float dy, float dz)
 
bool isCollisionFree (OBBTree3d *other_root)
 
bool isCollisionFree (OBB3d *other)
 

Private Member Functions

void initSibling (OBBTree3d *other)
 
void initChild (OBBTree3d *other)
 
void initBox (float *values)
 

Private Attributes

OBBTree3dsibling
 
OBBTree3dchild
 
OBB3dbox
 
bool sibling_valid
 
bool child_valid
 
bool box_valid
 

Detailed Description

A tree structure consisting of OBB3d bounding volumes, which over-approximates a target shape. The highest level OBB3d contains the complete target shape. Lower levels of the tree represent subsets overapproximate subsets of the target shape.

Constructor & Destructor Documentation

◆ OBBTree3d()

adore::mad::BoundingVolumes::OBBTree3d::OBBTree3d ( )
inline

empty constructor

Here is the caller graph for this function:

◆ ~OBBTree3d()

adore::mad::BoundingVolumes::OBBTree3d::~OBBTree3d ( )
inline

destructor

Member Function Documentation

◆ copy()

void adore::mad::BoundingVolumes::OBBTree3d::copy ( OBBTree3d other)
inline

copy the tree

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getBox()

OBB3d* adore::mad::BoundingVolumes::OBBTree3d::getBox ( )
inline

returns the bounding volume of this

◆ getChild()

OBBTree3d* adore::mad::BoundingVolumes::OBBTree3d::getChild ( )
inline

returns the first child of this

Here is the caller graph for this function:

◆ getSibling()

OBBTree3d* adore::mad::BoundingVolumes::OBBTree3d::getSibling ( )
inline

returns the next node on the same level as this

Here is the caller graph for this function:

◆ initBox()

void adore::mad::BoundingVolumes::OBBTree3d::initBox ( float *  values)
inlineprivate
Here is the call graph for this function:
Here is the caller graph for this function:

◆ initChild()

void adore::mad::BoundingVolumes::OBBTree3d::initChild ( OBBTree3d other)
inlineprivate
Here is the call graph for this function:
Here is the caller graph for this function:

◆ initSibling()

void adore::mad::BoundingVolumes::OBBTree3d::initSibling ( OBBTree3d other)
inlineprivate
Here is the call graph for this function:
Here is the caller graph for this function:

◆ isCollisionFree() [1/2]

bool adore::mad::BoundingVolumes::OBBTree3d::isCollisionFree ( OBB3d other)
inline

test for collisions between this OBBTree3d and a singular OBB3d

Here is the call graph for this function:

◆ isCollisionFree() [2/2]

bool adore::mad::BoundingVolumes::OBBTree3d::isCollisionFree ( OBBTree3d other_root)
inline

test for collisions between this OBBTree3d and (sub)tree represented by other_root

Returns
true if no collision possible, false if collision cannot be excluded at the given approximation details of the trees.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rotateZ()

void adore::mad::BoundingVolumes::OBBTree3d::rotateZ ( float  cos,
float  sin,
int  istart = 0 
)
inline

rotate this bounding volume and all bounding volumes in subtree around z

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setBox()

void adore::mad::BoundingVolumes::OBBTree3d::setBox ( OBB3d box)
inline

set bounding volume of this object

◆ setChild()

void adore::mad::BoundingVolumes::OBBTree3d::setChild ( OBBTree3d child)
inline

set child subtree

◆ setSibling()

void adore::mad::BoundingVolumes::OBBTree3d::setSibling ( OBBTree3d sibling)
inline

set sibling subtree

◆ transform_forwards()

void adore::mad::BoundingVolumes::OBBTree3d::transform_forwards ( float  cos_psi,
float  sin_psi,
float  dx,
float  dy,
float  dz 
)
inline

rotate and translate bounding volumes of this and of complete subtree

Here is the call graph for this function:
Here is the caller graph for this function:

◆ translate()

void adore::mad::BoundingVolumes::OBBTree3d::translate ( float *  t)
inline

translate this bounding volume and all bounding volumes in subtree

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ box

OBB3d* adore::mad::BoundingVolumes::OBBTree3d::box
private

overapproximation of target shape at this level

◆ box_valid

bool adore::mad::BoundingVolumes::OBBTree3d::box_valid
private

determines existance of box. allows to supress collision tests at higher levels by setting to false

◆ child

OBBTree3d* adore::mad::BoundingVolumes::OBBTree3d::child
private

the first child of this. other children of this are siblings of child

◆ child_valid

bool adore::mad::BoundingVolumes::OBBTree3d::child_valid
private

determines existance of child

◆ sibling

OBBTree3d* adore::mad::BoundingVolumes::OBBTree3d::sibling
private

a node on the same level as this

◆ sibling_valid

bool adore::mad::BoundingVolumes::OBBTree3d::sibling_valid
private

determines existance of sibling


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