Classes | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes

OpenTissue::mbd::CachingContactGraphAnalysis< types > Class Template Reference

#include <mbd_caching_contact_graph_analysis.h>

List of all members.

Classes

class  constraint_traits
class  edge_traits
class  node_traits

Public Member Functions

 CachingContactGraphAnalysis (void)
const bool post_broad_phase_analysis (edge_ptr_container &edges)
void doAbsoluteRestingTest (void)
void post_narrow_phase_analysis (edge_ptr_container &edges)
void post_contact_determination_analysis (edge_ptr_container &edges, group_ptr_container &reportedGroups)
void clear ()
void add (body_type *body)
void remove (body_type *body)
void init (configuration_type &configuration)

Protected Types

typedef
types::math_policy::index_type 
size_type
typedef
types::math_policy::vector3_type 
vector3_type
typedef
types::math_policy::matrix3x3_type 
matrix3x3_type
typedef
types::math_policy::quaternion_type 
quaternion_type
typedef
types::math_policy::coordsys_type 
coordsys_type
typedef
types::math_policy::real_type 
real_type
typedef types::configuration_type configuration_type
typedef types::group_container group_container
typedef types::group_ptr_container group_ptr_container
typedef types::group_type group_type
typedef types::edge_ptr_container edge_ptr_container
typedef
types::indirect_edge_iterator 
indirect_edge_iterator
typedef types::body_type body_type
typedef types::contact_type contact_type
typedef types::edge_type edge_type
typedef types::joint_type joint_type

Protected Member Functions

void traverseGroup (const size_type groupTag, edge_type *edge, group_type *group)

Protected Attributes

configuration_typem_configuration
 A pointer to the configuration that holds the current configuration.
size_type m_time_stamp
 Time-stamp indicating which iteration the STC analysis i performed in.

Detailed Description

template<typename types>
class OpenTissue::mbd::CachingContactGraphAnalysis< types >

Caching Contact Graph Analysis. This is a particular implementation of spatial-temporal-coherence analysis algorithm to be used as a policy in the CollisionDetection class.

The main idea is to store information in the contact graph edges (i.e. body pairs) and then in each query test this information to see whether information from last query can be reused, or if a quick-rejection is possible. Also a connected component search is done on the contact graph in order to determine independent contact groups.


Member Typedef Documentation

template<typename types >
typedef types::body_type OpenTissue::mbd::CachingContactGraphAnalysis< types >::body_type [protected]
template<typename types >
typedef types::configuration_type OpenTissue::mbd::CachingContactGraphAnalysis< types >::configuration_type [protected]
template<typename types >
typedef types::contact_type OpenTissue::mbd::CachingContactGraphAnalysis< types >::contact_type [protected]
template<typename types >
typedef types::math_policy::coordsys_type OpenTissue::mbd::CachingContactGraphAnalysis< types >::coordsys_type [protected]
template<typename types >
typedef types::edge_ptr_container OpenTissue::mbd::CachingContactGraphAnalysis< types >::edge_ptr_container [protected]
template<typename types >
typedef types::edge_type OpenTissue::mbd::CachingContactGraphAnalysis< types >::edge_type [protected]
template<typename types >
typedef types::group_container OpenTissue::mbd::CachingContactGraphAnalysis< types >::group_container [protected]
template<typename types >
typedef types::group_ptr_container OpenTissue::mbd::CachingContactGraphAnalysis< types >::group_ptr_container [protected]
template<typename types >
typedef types::group_type OpenTissue::mbd::CachingContactGraphAnalysis< types >::group_type [protected]
template<typename types >
typedef types::indirect_edge_iterator OpenTissue::mbd::CachingContactGraphAnalysis< types >::indirect_edge_iterator [protected]
template<typename types >
typedef types::joint_type OpenTissue::mbd::CachingContactGraphAnalysis< types >::joint_type [protected]
template<typename types >
typedef types::math_policy::matrix3x3_type OpenTissue::mbd::CachingContactGraphAnalysis< types >::matrix3x3_type [protected]
template<typename types >
typedef types::math_policy::quaternion_type OpenTissue::mbd::CachingContactGraphAnalysis< types >::quaternion_type [protected]
template<typename types >
typedef types::math_policy::index_type OpenTissue::mbd::CachingContactGraphAnalysis< types >::size_type [protected]

Constructor & Destructor Documentation

template<typename types >
OpenTissue::mbd::CachingContactGraphAnalysis< types >::CachingContactGraphAnalysis ( void   )  [inline]

Member Function Documentation

template<typename types >
void OpenTissue::mbd::CachingContactGraphAnalysis< types >::add ( body_type body  )  [inline]
template<typename types >
void OpenTissue::mbd::CachingContactGraphAnalysis< types >::clear (  )  [inline]
template<typename types >
void OpenTissue::mbd::CachingContactGraphAnalysis< types >::doAbsoluteRestingTest ( void   )  [inline]

Absolute Resting Test. This method examines each body in the configuration and tries to determine wheter it has moved since last invocation. If not then the body is said to be in absolute rest.

The term absolute rest, reflects how geometry is percieved it has nothing to do with the dynamic state of a body.

template<typename types >
void OpenTissue::mbd::CachingContactGraphAnalysis< types >::init ( configuration_type configuration  )  [inline]
template<typename types >
const bool OpenTissue::mbd::CachingContactGraphAnalysis< types >::post_broad_phase_analysis ( edge_ptr_container edges  )  [inline]

Post Broad Phase Analysis.

Parameters:
edges The overlaps reported from the broad phase collision detection phase.
Returns:
A boolean value indicating wheter a penetration have been detected at this stage in analysis.
template<typename types >
void OpenTissue::mbd::CachingContactGraphAnalysis< types >::post_contact_determination_analysis ( edge_ptr_container edges,
group_ptr_container reportedGroups 
) [inline]

Post Contact Determination Analysis. In this phase all the geometrical proximity information that have been determined prior in the collision detection engine pipeline is analyzed inorder to build a higher level construct called contact groups. That is independent groups of contacts and bodies. Independent implies that they can be simulated independently of each other.

Parameters:
edges The edges that were detected by the broad phase collision detection algorithm.
reportedGroups Upon return this group container contains all the contact groups.
template<typename types >
void OpenTissue::mbd::CachingContactGraphAnalysis< types >::post_narrow_phase_analysis ( edge_ptr_container edges  )  [inline]

Post Narrow Phase Analysis. In this analysis all body pairs (i.e. overlaps or edges) that were processed by the narrow phase collision detection algorithm are examined.

For each body pair the contact state is determined and all separated body pairs are filtred from the set of processed body pairs. This is because it does not make sense to run contact determination on a separated body pair.

Parameters:
edges 
template<typename types >
void OpenTissue::mbd::CachingContactGraphAnalysis< types >::remove ( body_type body  )  [inline]
template<typename types >
void OpenTissue::mbd::CachingContactGraphAnalysis< types >::traverseGroup ( const size_type  groupTag,
edge_type edge,
group_type group 
) [inline, protected]

Traverse Contact group_type.

Parameters:
groupTag A unique index identifying the contact groups that is currently being traversed.
edge The current body pair of the contact group that is traversed.
group Upon return this argument holds the traversed contact group.

Member Data Documentation

A pointer to the configuration that holds the current configuration.

template<typename types >
size_type OpenTissue::mbd::CachingContactGraphAnalysis< types >::m_time_stamp [protected]

Time-stamp indicating which iteration the STC analysis i performed in.


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