CellModules
MecaCell::ConnectableCell< Derived, Body > Class Template Reference

Basis for every cell a user might want to use. More...

#include <connectablecell.hpp>

Public Types

using body_t = Body< Derived >
 
using embedded_plugin_t = typename body_t::embedded_plugin_t
 

Public Member Functions

void eraseConnectedCell (Derived *cell)
 disconnect a neighboring cell More...
 
void addConnectedCell (Derived *c)
 
void clearConnectedCells ()
 
bool isConnectedTo (Derived *c)
 
size_t getId () const
 
 ConnectableCell (const Derived &c)
 
 ConnectableCell (const ConnectableCell &c)
 
 ConnectableCell (const Derived *c)
 Copy constructor. More...
 
 ConnectableCell (Vec pos)
 Constructor. More...
 
 ConnectableCell ()
 
 ConnectableCell (const Derived &c, const Vec &translation)
 Copy constructor with translation. More...
 
void die ()
 flags the cell as dead so it can be cleanly removed from the world More...
 
bool isDead ()
 
Vector3D getPosition () const
 
void setColorRGB (size_t r, size_t g, size_t b)
 
void setColorRGB (std::array< int, 3 > rgb)
 
void setColorRGB (std::array< double, 3 > rgb)
 
void setColorHSV (double H, double S, double V)
 
void setColorHSV (std::array< double, 3 > hsv)
 
void setVisible (bool v)
 should a viewer displpay this cell ? More...
 
string toString ()
 dumps internal infos More...
 
body_tgetBody ()
 
const body_tgetConstBody () const
 
double getBoundingBoxRadius () const
 
double getColor (unsigned int i) const
 
const std::vector< Derived * > & getConnectedCells () const
 
bool getVisible ()
 
int getNbConnections () const
 
 EXPORTABLE (ConnectableCell, KV(body), KV(id))
 

Public Attributes

friend body_t
 
friend embedded_plugin_t
 
size_t id = 0
 

Protected Member Functions

Derived * selfptr ()
 
Derived & self ()
 
const Derived & selfconst () const
 

Protected Attributes

body_t body
 
bool dead = false
 
bool isVisible = true
 
array< double, 3 > color
 
unique_vector< Derived * > connectedCells
 

Detailed Description

template<class Derived, template< class > class Body = ContactSurfaceBody>
class MecaCell::ConnectableCell< Derived, Body >

Basis for every cell a user might want to use.

It uses the curriously reccuring template pattern : Derived is the user's type inheriting ConnectableCell. Body is the type of body used by the cell. A body is a low level class that handles everything related to physics (deformations, connections, volume). A ConnectableCell is a more abstract interface meant to expose higher instinctive, meaningful parameters and methods. It also represents the cell's center, which can be seen as its kernel (it is NOT always the center of mass, but often close enough)

Template Parameters
Bodythe body implementation (which contains most of the core logic)

Definition at line 34 of file connectablecell.hpp.

Member Typedef Documentation

◆ body_t

template<class Derived , template< class > class Body = ContactSurfaceBody>
using MecaCell::ConnectableCell< Derived, Body >::body_t = Body<Derived>

Definition at line 36 of file connectablecell.hpp.

◆ embedded_plugin_t

template<class Derived , template< class > class Body = ContactSurfaceBody>
using MecaCell::ConnectableCell< Derived, Body >::embedded_plugin_t = typename body_t::embedded_plugin_t

Definition at line 37 of file connectablecell.hpp.

Constructor & Destructor Documentation

◆ ConnectableCell() [1/6]

template<class Derived , template< class > class Body = ContactSurfaceBody>
MecaCell::ConnectableCell< Derived, Body >::ConnectableCell ( const Derived &  c)
inline

Definition at line 76 of file connectablecell.hpp.

◆ ConnectableCell() [2/6]

template<class Derived , template< class > class Body = ContactSurfaceBody>
MecaCell::ConnectableCell< Derived, Body >::ConnectableCell ( const ConnectableCell< Derived, Body > &  c)
inline

Definition at line 79 of file connectablecell.hpp.

◆ ConnectableCell() [3/6]

template<class Derived , template< class > class Body = ContactSurfaceBody>
MecaCell::ConnectableCell< Derived, Body >::ConnectableCell ( const Derived *  c)
inline

Copy constructor.

Parameters
cthe other cell

Definition at line 87 of file connectablecell.hpp.

◆ ConnectableCell() [4/6]

template<class Derived , template< class > class Body = ContactSurfaceBody>
MecaCell::ConnectableCell< Derived, Body >::ConnectableCell ( Vec  pos)
inline

Constructor.

Parameters
posinitial position of the cell's kernel

Definition at line 94 of file connectablecell.hpp.

◆ ConnectableCell() [5/6]

template<class Derived , template< class > class Body = ContactSurfaceBody>
MecaCell::ConnectableCell< Derived, Body >::ConnectableCell ( )
inline

Definition at line 96 of file connectablecell.hpp.

◆ ConnectableCell() [6/6]

template<class Derived , template< class > class Body = ContactSurfaceBody>
MecaCell::ConnectableCell< Derived, Body >::ConnectableCell ( const Derived &  c,
const Vec translation 
)
inline

Copy constructor with translation.

Useful for division, for example. Shifts the created cell relatively to the copied one.

Parameters
cthe copied cell
translationthe vector by which the created cell is translated

Definition at line 107 of file connectablecell.hpp.

Member Function Documentation

◆ addConnectedCell()

template<class Derived , template< class > class Body = ContactSurfaceBody>
void MecaCell::ConnectableCell< Derived, Body >::addConnectedCell ( Derived *  c)
inline

Definition at line 70 of file connectablecell.hpp.

◆ clearConnectedCells()

template<class Derived , template< class > class Body = ContactSurfaceBody>
void MecaCell::ConnectableCell< Derived, Body >::clearConnectedCells ( )
inline

Definition at line 71 of file connectablecell.hpp.

◆ die()

template<class Derived , template< class > class Body = ContactSurfaceBody>
void MecaCell::ConnectableCell< Derived, Body >::die ( )
inline

flags the cell as dead so it can be cleanly removed from the world

Definition at line 118 of file connectablecell.hpp.

◆ eraseConnectedCell()

template<class Derived , template< class > class Body = ContactSurfaceBody>
void MecaCell::ConnectableCell< Derived, Body >::eraseConnectedCell ( Derived *  cell)
inline

disconnect a neighboring cell

removes it from the connectedCells contianer

Parameters
cellpointer to the cell to be disconnected

Definition at line 69 of file connectablecell.hpp.

◆ EXPORTABLE()

template<class Derived , template< class > class Body = ContactSurfaceBody>
MecaCell::ConnectableCell< Derived, Body >::EXPORTABLE ( ConnectableCell< Derived, Body >  ,
KV(body ,
KV(id  
)

◆ getBody()

template<class Derived , template< class > class Body = ContactSurfaceBody>
body_t & MecaCell::ConnectableCell< Derived, Body >::getBody ( )
inline

Definition at line 152 of file connectablecell.hpp.

◆ getBoundingBoxRadius()

template<class Derived , template< class > class Body = ContactSurfaceBody>
double MecaCell::ConnectableCell< Derived, Body >::getBoundingBoxRadius ( ) const
inline

Definition at line 154 of file connectablecell.hpp.

◆ getColor()

template<class Derived , template< class > class Body = ContactSurfaceBody>
double MecaCell::ConnectableCell< Derived, Body >::getColor ( unsigned int  i) const
inline

Definition at line 155 of file connectablecell.hpp.

◆ getConnectedCells()

template<class Derived , template< class > class Body = ContactSurfaceBody>
const std::vector< Derived * > & MecaCell::ConnectableCell< Derived, Body >::getConnectedCells ( ) const
inline

Definition at line 159 of file connectablecell.hpp.

◆ getConstBody()

template<class Derived , template< class > class Body = ContactSurfaceBody>
const body_t & MecaCell::ConnectableCell< Derived, Body >::getConstBody ( ) const
inline

Definition at line 153 of file connectablecell.hpp.

◆ getId()

template<class Derived , template< class > class Body = ContactSurfaceBody>
size_t MecaCell::ConnectableCell< Derived, Body >::getId ( ) const
inline

Definition at line 75 of file connectablecell.hpp.

◆ getNbConnections()

template<class Derived , template< class > class Body = ContactSurfaceBody>
int MecaCell::ConnectableCell< Derived, Body >::getNbConnections ( ) const
inline

Definition at line 163 of file connectablecell.hpp.

◆ getPosition()

template<class Derived , template< class > class Body = ContactSurfaceBody>
Vector3D MecaCell::ConnectableCell< Derived, Body >::getPosition ( ) const
inline

Definition at line 120 of file connectablecell.hpp.

◆ getVisible()

template<class Derived , template< class > class Body = ContactSurfaceBody>
bool MecaCell::ConnectableCell< Derived, Body >::getVisible ( )
inline

Definition at line 162 of file connectablecell.hpp.

◆ isConnectedTo()

template<class Derived , template< class > class Body = ContactSurfaceBody>
bool MecaCell::ConnectableCell< Derived, Body >::isConnectedTo ( Derived *  c)
inline

Definition at line 72 of file connectablecell.hpp.

◆ isDead()

template<class Derived , template< class > class Body = ContactSurfaceBody>
bool MecaCell::ConnectableCell< Derived, Body >::isDead ( )
inline

Definition at line 119 of file connectablecell.hpp.

◆ self()

template<class Derived , template< class > class Body = ContactSurfaceBody>
Derived & MecaCell::ConnectableCell< Derived, Body >::self ( )
inlineprotected

Definition at line 58 of file connectablecell.hpp.

◆ selfconst()

template<class Derived , template< class > class Body = ContactSurfaceBody>
const Derived & MecaCell::ConnectableCell< Derived, Body >::selfconst ( ) const
inlineprotected

Definition at line 59 of file connectablecell.hpp.

◆ selfptr()

template<class Derived , template< class > class Body = ContactSurfaceBody>
Derived * MecaCell::ConnectableCell< Derived, Body >::selfptr ( )
inlineprotected

Definition at line 57 of file connectablecell.hpp.

◆ setColorHSV() [1/2]

template<class Derived , template< class > class Body = ContactSurfaceBody>
void MecaCell::ConnectableCell< Derived, Body >::setColorHSV ( double  H,
double  S,
double  V 
)
inline

Definition at line 128 of file connectablecell.hpp.

◆ setColorHSV() [2/2]

template<class Derived , template< class > class Body = ContactSurfaceBody>
void MecaCell::ConnectableCell< Derived, Body >::setColorHSV ( std::array< double, 3 >  hsv)
inline

Definition at line 129 of file connectablecell.hpp.

◆ setColorRGB() [1/3]

template<class Derived , template< class > class Body = ContactSurfaceBody>
void MecaCell::ConnectableCell< Derived, Body >::setColorRGB ( size_t  r,
size_t  g,
size_t  b 
)
inline

Definition at line 122 of file connectablecell.hpp.

◆ setColorRGB() [2/3]

template<class Derived , template< class > class Body = ContactSurfaceBody>
void MecaCell::ConnectableCell< Derived, Body >::setColorRGB ( std::array< double, 3 >  rgb)
inline

Definition at line 127 of file connectablecell.hpp.

◆ setColorRGB() [3/3]

template<class Derived , template< class > class Body = ContactSurfaceBody>
void MecaCell::ConnectableCell< Derived, Body >::setColorRGB ( std::array< int, 3 >  rgb)
inline

Definition at line 126 of file connectablecell.hpp.

◆ setVisible()

template<class Derived , template< class > class Body = ContactSurfaceBody>
void MecaCell::ConnectableCell< Derived, Body >::setVisible ( bool  v)
inline

should a viewer displpay this cell ?

Parameters
v

Definition at line 136 of file connectablecell.hpp.

◆ toString()

template<class Derived , template< class > class Body = ContactSurfaceBody>
string MecaCell::ConnectableCell< Derived, Body >::toString ( )
inline

dumps internal infos

Returns
a formatted string

Definition at line 143 of file connectablecell.hpp.

Member Data Documentation

◆ body

template<class Derived , template< class > class Body = ContactSurfaceBody>
body_t MecaCell::ConnectableCell< Derived, Body >::body
protected

Definition at line 43 of file connectablecell.hpp.

◆ body_t

template<class Derived , template< class > class Body = ContactSurfaceBody>
friend MecaCell::ConnectableCell< Derived, Body >::body_t

Definition at line 39 of file connectablecell.hpp.

◆ color

template<class Derived , template< class > class Body = ContactSurfaceBody>
array<double, 3> MecaCell::ConnectableCell< Derived, Body >::color
protected
Initial value:
= {
{0.75, 0.12, 0.07}}

Definition at line 51 of file connectablecell.hpp.

◆ connectedCells

template<class Derived , template< class > class Body = ContactSurfaceBody>
unique_vector<Derived *> MecaCell::ConnectableCell< Derived, Body >::connectedCells
protected

Definition at line 54 of file connectablecell.hpp.

◆ dead

template<class Derived , template< class > class Body = ContactSurfaceBody>
bool MecaCell::ConnectableCell< Derived, Body >::dead = false
protected

Definition at line 44 of file connectablecell.hpp.

◆ embedded_plugin_t

template<class Derived , template< class > class Body = ContactSurfaceBody>
friend MecaCell::ConnectableCell< Derived, Body >::embedded_plugin_t

Definition at line 40 of file connectablecell.hpp.

◆ id

template<class Derived , template< class > class Body = ContactSurfaceBody>
size_t MecaCell::ConnectableCell< Derived, Body >::id = 0

Definition at line 74 of file connectablecell.hpp.

◆ isVisible

template<class Derived , template< class > class Body = ContactSurfaceBody>
bool MecaCell::ConnectableCell< Derived, Body >::isVisible = true
protected

Definition at line 49 of file connectablecell.hpp.


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