In file tetrahedrisation/ActiveTetraVertex3D.h:

class ActiveTetraVertex3D : public TetraVertex3D, public ActiveVertex3D

an vertex of an active 3D Tetrahedrisation

Inheritance:


Public Methods

void computeEdgesLengthAndDirection (void)
computes vertex edges length and direction
virtual void setProperties (TetraVertex3D* v0, double c0=1, TetraVertex3D* v1=NULL, double c1=0, TetraVertex3D* v2=NULL, double c2=0, TetraVertex3D* v3=NULL, double c3=0)
set all vertex's properties that can be transmited when refining
inline ActiveTetra3D* getTetrahedrisation () const
get the mesh containing the vertex
virtual void fixVertex ()
fix a vertex ie do not allow it to move
unsigned int getMatrixIndex () const
returns the vertex index in the rigidity matrix
void setMatrixIndex (const unsigned int _index)
modifies the the vertex index in the rigidity matrix
virtual void freeVertex ()
free a vertex ie allow it to move
void* getData () const
return the edge data
void setData (void *pt )
set the edge data to a given value
Vec3 getClosestPoint () const
return the closest data point of a vertex
inline const Vec3 & getPreviousInternalForce () const
returns the previous internal force of a vertex
inline Vec3 getPenultimatePosition (void) const
returns the penultimate position
inline const Vec3 & getRestPosition () const
returns the rest position of a vertex
void setRestPosition (const Vec3 &p)
set new rest position
inline double getMass () const
get the mass
void setMass (const double m)
set the mass
void addMass (const double m)
add to the mass
void asynchronousUpdatePosition (void)
updates vertex position for asynchronous computation
void updatePosition (void)
updates vertex position by applying total force
void updatePosition (const Vec3& force)
updates vertex position
void invertElasticTensor ()
store in inverseTensor the inverse matrix of the elastic tensor
inline bool isVertexFixed () const
whether the vertex is fixed or free to move
inline void addTensor (const Matrix3x3 &t)
add to the current tensor a given tensor
inline void substractTensor (const Matrix3x3 &t)
substract to the current tensor a given tensor
void addScaleInternalForce (const double l)
increment the scale of the internal force
void setScaleInternalForce (double l)
set the scale of the internal force
double getScaleInternalForce () const
set the scale of the internal force
inline Matrix3x3 & getTensor ()
return by reference the elastic tensor stored at the vertex
Matrix3x3 & getInverseTensor ()
return by reference the inverse of teh elastic tensor stored at the vertex
void setPriority (unsigned int p)
setPriority
inline unsigned int getPriority ()
get priority

Public

constructor
ActiveTetraVertex3D (Tetra3D *mesh, const Vec3 &p=Vec3(), bool _empty=false)
3D Active Vertex constructor
destructor
virtual ~ActiveTetraVertex3D ()
delete vertex

Protected Fields

void* vertexData
data used for the computation of internal forces
Vec3 closestPoint
store the closest point found with the external force
Vec3 previousInternalForce
the vertex internal force at the previous time step (in N)
Vec3 previousExternalForce
the vertex external force at the previous time step (in N)
Vec3 penultimatePosition
the position two timesteps before (in mm)
Vec3 restPosition
the vertex position in its rest position (in mm)
ActiveTetraVertex3D* vertexWindow
temporary storage for recursive search
Matrix3x3 tensor
elastic tensor (in kg/s^2)
Matrix3x3 inverseTensor
inverse matrix of the elastic tensor (in kg/s^2)
double distanceData
distance of point to the closest data point
double mass
mass associated to the vertex (in kg)
double scaleInternalForce
used to scale the internal when updating position
bool inverseTensorValid
indicates if the inverseTensor is valid or not
unsigned int matrixIndex
the vertex index in the rigidity matrix

Protected Methods

void move (int level, Vec3 move, ActiveTetraVertex3D *v1)
recursive move vertex function
void grab (const Vec3& G, unsigned int r)
apply spring forces in the neighborhood of a vertex with a decreasing extent

Inherited from TetraVertex3D:

Public Classes

class TetrahedronVertexIteratorBasic
std::set <TetraTetrahedron3D *> ::iterator tetrahedronIterator
iterator on the set of adjacent tetrahedra
TetraVertex3D* vertex
the vertex around which we iterate
constructor
TetrahedronVertexIteratorBasic(TetraVertex3D *v)
constructor builds a tetrahedron iterator around a vertex
destructor
~TetrahedronVertexIteratorBasic()
delete tetrahedron iterator : if the vertex is real then erase the tetrahedron list otherwise do nothing
void first()
set iterator on the first tetrahedron item
bool isAtEnd() const
returns true if the iterator is at the end of the list
template class TetrahedronVertexIterator: public TetrahedronVertexIteratorBasic
constructor
TetrahedronVertexIterator(TetraVertex3D *v)
constructor builds a tetrahedron iterator around a vertex
destructor
~TetrahedronVertexIterator()
delete tetrahedron iterator : if the vertex is real then erase the tetrahedron list otherwise do nothing
T* operator*()
returns current tetrahedron
void operator++(void)
set iterator on next tetrahedron
T* operator++(int)
returns current tetrahedron then set iterator on next one
void operator--(void)
set iterator on previous tetrahedron
T* operator--(int)
returns current tetrahedron then set iterator on previous one
class TriangleVertexIteratorBasic
std::set <TetraTetrahedron3D *> ::iterator tetrahedronIterator
iterator on the set of adjacent tetrahedra
TetraVertex3D* vertex
the vertex around which we iterate
constructor
TriangleVertexIteratorBasic(TetraVertex3D *v)
constructor builds a triangle iterator around a vertex
destructor
~TriangleVertexIteratorBasic()
delete triangle iterator
void first()
set iterator on the first triangle item
bool isAtEnd() const
returns true if the iterator is at the end of the list
template class TriangleVertexIterator: public TriangleVertexIteratorBasic
T* getTriangle(const TetraTetrahedron3D *t)
returns the triangle opposite to vertex in tetrahedron t
constructor
TriangleVertexIterator(TetraVertex3D *v)
constructor builds a triangle iterator around a vertex
destructor
~TriangleVertexIterator()
delete triangle iterator
T* operator*()
returns current triangle
void operator++(void)
set iterator on next triangle
T* operator++(int)
returns current triangle then set iterator on next one
void operator--(void)
set iterator on previous triangle
T* operator--(int)
returns current triangle then set iterator on previous one
class EdgeVertexIteratorBasic
std::set <TetraEdge3D *> ::iterator edgeIterator
iterator on the set of adjacent edges
TetraVertex3D* vertex
the vertex aroud which we iterate
constructor
EdgeVertexIteratorBasic(TetraVertex3D *v)
constructor builds an edge iterator around a vertex
destructor
~EdgeVertexIteratorBasic()
delete edge iterator
void first()
set iterator on the first edge item
bool isAtEnd() const
returns true if the iterator is at the end of the list
template class EdgeVertexIterator: public EdgeVertexIteratorBasic
constructor
EdgeVertexIterator(TetraVertex3D *v)
constructor builds an edge iterator around a vertex
destructor
~EdgeVertexIterator()
delete edge iterator
T* operator*()
returns current edge
void operator++(void)
set iterator on next edge
T* operator++(int)
returns current edge then set iterator on next one
void operator--(void)
set iterator on previous edge
T* operator--(int)
returns current edge then set iterator on previous one
class OppositeEdgeVertexIteratorBasic
std::set <TetraEdge3D *> ::iterator edgeIterator
iterator on the set of opposite edges
TetraVertex3D* vertex
the vertex around which we iterate
constructor
OppositeEdgeVertexIteratorBasic(TetraVertex3D *v)
constructor builds an edge iterator around a vertex
destructor
~OppositeEdgeVertexIteratorBasic()
delete edge iterator
void first()
set iterator on the first edge item
bool isAtEnd() const
returns true if the iterator is at the end of the list
template class OppositeEdgeVertexIterator: public OppositeEdgeVertexIteratorBasic
constructor
OppositeEdgeVertexIterator(TetraVertex3D *v)
constructor builds an edge iterator around a vertex
destructor
~OppositeEdgeVertexIterator()
delete edge iterator
T* operator*()
returns current edge
void operator++(void)
set iterator on next edge
T* operator++(int)
returns current edge then set iterator on next one
void operator--(void)
set iterator on previous edge
T* operator--(int)
returns current edge then set iterator on previous one
template class VertexVertexIterator: public EdgeVertexIteratorBasic
T* getVertex(const TetraEdge3D *e)
returns the vertex opposite to vertex in edge e
constructor
VertexVertexIterator(TetraVertex3D *v)
constructor builds an iterator on vertices adjacent around a vertex
destructor
~VertexVertexIterator()
delete vertex iterator
T* operator*()
returns current vertex
void operator++(void)
set iterator on next vertex
T* operator++(int)
returns current vertex then set iterator on next one
void operator--(void)
set iterator on previous vertex
T* operator--(int)
returns current vertex then set iterator on previous one

Public Methods

void resetTopology()
void setEdgeSize(const double _size)
void multiplyEdgeSize(const double ratio)
inline double getEdgeSize() const
bool removeSurroundingTetrahedra()
inline TetraTetrahedron3D* getTetrahedron() const
inline unsigned int getTetrahedronIndex() const
inline bool isReal() const
void setVirtual()
TetraEdge3D* getAdjacentVirtualEdge()
TetraVertex3D* getAdjacentVirtualVertex()
inline unsigned int getRef() const
inline Vec3 getPosition() const
void setPosition(Vec3 np)
void computeNormalOnAdjacentVertices()
void setRef(unsigned int r)
inline Vec3 getNormal() const
void setNormal(Vec3 * n)

Protected Fields

Tetra3D* tetrahedrisation
Vec3 position
Vec3 * normal
TetraTetrahedron3D* tetrahedron
unsigned int tetrahedronIndex
double edgeSize
bool empty
std::set <TetraTetrahedron3D *> tetrahedronList
std::set <TetraEdge3D *> edgeList
std::set <TetraEdge3D *> oppositeEdgeList
bool isDivided
unsigned int ref

Protected Methods

std::list <TetraVertex3D*> divideVirtualVertex(std::set<TetraTetrahedron3D*>)
void replaceWithVirtualVertex(TetraVertex3D*)
void refineVertex()
void setTetrahedron(TetraTetrahedron3D *t, int i=-1)
void addTetrahedronInList(TetraTetrahedron3D *t, unsigned int index)
void buildAdjacentTetrahedronSet()
void buildAdjacentEdgeSet()
void buildOppositeEdgeSet()

Documentation

an vertex of an active 3D Tetrahedrisation
void* vertexData
data used for the computation of internal forces

Vec3 closestPoint
store the closest point found with the external force

Vec3 previousInternalForce
the vertex internal force at the previous time step (in N)

Vec3 previousExternalForce
the vertex external force at the previous time step (in N)

Vec3 penultimatePosition
the position two timesteps before (in mm)

Vec3 restPosition
the vertex position in its rest position (in mm)

ActiveTetraVertex3D* vertexWindow
temporary storage for recursive search

Matrix3x3 tensor
elastic tensor (in kg/s^2)

Matrix3x3 inverseTensor
inverse matrix of the elastic tensor (in kg/s^2)

double distanceData
distance of point to the closest data point

double mass
mass associated to the vertex (in kg)

double scaleInternalForce
used to scale the internal when updating position

bool inverseTensorValid
indicates if the inverseTensor is valid or not

unsigned int matrixIndex
the vertex index in the rigidity matrix

void move(int level, Vec3 move, ActiveTetraVertex3D *v1)
recursive move vertex function
Parameters:
level - recursive level
move - extenal force to apply onto vertex
v1 - grabbed vertex that caused move to be called

void grab(const Vec3& G, unsigned int r)
apply spring forces in the neighborhood of a vertex with a decreasing extent
Parameters:
G - the point towards which the force is applied
r - the neighborhood size

void computeEdgesLengthAndDirection(void)
computes vertex edges length and direction

constructor

ActiveTetraVertex3D(Tetra3D *mesh, const Vec3 &p=Vec3(), bool _empty=false)
3D Active Vertex constructor
Parameters:
mesh - tetrahedrisation containing the vertex
p - vertex position
empty - if the vertex is real or virtual

destructor

virtual ~ActiveTetraVertex3D()
delete vertex

virtual void setProperties(TetraVertex3D* v0, double c0=1, TetraVertex3D* v1=NULL, double c1=0, TetraVertex3D* v2=NULL, double c2=0, TetraVertex3D* v3=NULL, double c3=0)
set all vertex's properties that can be transmited when refining
Parameters:
v0 - , v1, v2, v3 vertices
corresponding - barycentriacal coeff

inline ActiveTetra3D* getTetrahedrisation() const
get the mesh containing the vertex

virtual void fixVertex()
fix a vertex ie do not allow it to move

unsigned int getMatrixIndex() const
returns the vertex index in the rigidity matrix

void setMatrixIndex(const unsigned int _index)
modifies the the vertex index in the rigidity matrix

virtual void freeVertex()
free a vertex ie allow it to move

void* getData() const
return the edge data

void setData(void *pt )
set the edge data to a given value

Vec3 getClosestPoint() const
return the closest data point of a vertex

inline const Vec3 & getPreviousInternalForce() const
returns the previous internal force of a vertex

inline Vec3 getPenultimatePosition(void) const
returns the penultimate position

inline const Vec3 & getRestPosition() const
returns the rest position of a vertex

void setRestPosition(const Vec3 &p)
set new rest position

inline double getMass() const
get the mass

void setMass(const double m)
set the mass

void addMass(const double m)
add to the mass

void asynchronousUpdatePosition(void)
updates vertex position for asynchronous computation

void updatePosition(void)
updates vertex position by applying total force

void updatePosition(const Vec3& force)
updates vertex position
Parameters:
force - displacement to apply to vertex

void invertElasticTensor()
store in inverseTensor the inverse matrix of the elastic tensor

inline bool isVertexFixed() const
whether the vertex is fixed or free to move

inline void addTensor(const Matrix3x3 &t)
add to the current tensor a given tensor

inline void substractTensor(const Matrix3x3 &t)
substract to the current tensor a given tensor

void addScaleInternalForce(const double l)
increment the scale of the internal force

void setScaleInternalForce(double l)
set the scale of the internal force

double getScaleInternalForce() const
set the scale of the internal force

inline Matrix3x3 & getTensor()
return by reference the elastic tensor stored at the vertex

Matrix3x3 & getInverseTensor()
return by reference the inverse of teh elastic tensor stored at the vertex

void setPriority(unsigned int p)
setPriority

inline unsigned int getPriority()
get priority


This class has no child classes.

alphabetic index hierarchy of classes


this page has been generated automatically by doc++

(c)opyright by Malte Zöckler, Roland Wunderling
contact: doc++@zib.de