Computer Assisted Medical Intervention Tool Kit  version 5.2
TranslationConstraint.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * $CAMITK_LICENCE_BEGIN$
3  *
4  * CamiTK - Computer Assisted Medical Intervention ToolKit
5  * (c) 2001-2024 Univ. Grenoble Alpes, CNRS, Grenoble INP - UGA, TIMC, 38000 Grenoble, France
6  *
7  * Visit http://camitk.imag.fr for more information
8  *
9  * This file is part of CamiTK.
10  *
11  * CamiTK is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * CamiTK is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU Lesser General Public License version 3 for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public License
21  * version 3 along with CamiTK. If not, see <http://www.gnu.org/licenses/>.
22  *
23  * $CAMITK_LICENCE_END$
24  ****************************************************************************/
25 
26 #ifndef SIMULATOR_SIMULATORS_SOFA_TRANSLATIONCONSTRAINT_H
27 #define SIMULATOR_SIMULATORS_SOFA_TRANSLATIONCONSTRAINT_H
28 
29 
30 #include "sofa/core/behavior/ProjectiveConstraintSet.h"
31 #include "sofa/core/behavior/MechanicalState.h"
32 //#include "sofa/core/VisualModel.h"
33 
34 #include <vector>
35 #include <map>
36 
37 #include <Loads.h>
38 
39 template<class DataTypes>
40 
48 class TranslationConstraint : public sofa::core::behavior::ProjectiveConstraintSet<DataTypes> { //, public VisualModel
49 public :
51  typedef typename DataTypes::VecCoord VecCoord;
52  typedef typename DataTypes::VecDeriv VecDeriv;
53  typedef typename DataTypes::VecCoord::iterator VecCoordIterator;
54  typedef typename DataTypes::VecDeriv::iterator VecDerivIterator;
55  typedef typename DataTypes::Coord Coord;
56  typedef typename DataTypes::Deriv Deriv;
57 
58  typedef typename DataTypes::MatrixDeriv::RowType MatrixDerivRowType;
59 
61  TranslationConstraint(Loads* loadsList, const std::map<unsigned int, unsigned int>& atomIndexToDOFIndex, sofa::core::behavior::MechanicalState<DataTypes>* mm);
62 
64 
66  std::vector<unsigned int> getTargets() {
67  return targets;
68  }
69 
73 
76  virtual void projectVelocity(VecDeriv& v);
77  virtual void projectPosition(VecCoord& x);
78 
80 
82  void draw();
83  void initTextures() { }
84  void update() { }
85 
87  void setInitTime(double time);
88 
89  //TODO need to define which getclass to choose because of double inherance...
90  //sofa::core::objectmodel::BaseClass* getClass() const {return nullptr;}
91 
92 private:
93 
95  void fixDOF(int index, int axe);
97  sofa::core::behavior::MechanicalState<DataTypes>* mmodel;
99  std::vector<unsigned int> targets;
101  VecDeriv translations;
103  VecDeriv directionsNULLs;
105  VecDeriv initPos;
107  double initTime;
109  std::vector<Load*> loads;
111  std::map<unsigned int, unsigned int> atomToDOFIndexes;
112 };
113 
114 #endif // SIMULATOR_SIMULATORS_SOFA_TRANSLATIONCONSTRAINT_H
This class makes it possible to manage a list of "Load".
Definition: Loads.h:71
TODO Comment class here.
Definition: TranslationConstraint.h:48
DataTypes::VecDeriv::iterator VecDerivIterator
Definition: TranslationConstraint.h:54
std::vector< unsigned int > getTargets()
return the targets list
Definition: TranslationConstraint.h:66
TranslationConstraint(Loads *loadsList, const std::map< unsigned int, unsigned int > &atomIndexToDOFIndex, sofa::core::behavior::MechanicalState< DataTypes > *mm)
constructor
DataTypes::VecDeriv VecDeriv
Definition: TranslationConstraint.h:52
DataTypes::MatrixDeriv::RowType MatrixDerivRowType
Definition: TranslationConstraint.h:58
TranslationConstraint< DataTypes > * addConstraint(unsigned int index, Deriv trans)
fix or translate a point
DataTypes::Coord Coord
Definition: TranslationConstraint.h:55
void setInitTime(double time)
set initial time (context->getTime() remind the same when simulation is rewind)
virtual void projectPosition(VecCoord &x)
project x to constrained space (x models a position)
DataTypes::VecCoord VecCoord
template types
Definition: TranslationConstraint.h:51
DataTypes::VecCoord::iterator VecCoordIterator
Definition: TranslationConstraint.h:53
void initTextures()
Definition: TranslationConstraint.h:83
void projectResponse(VecDeriv &dx)
Constraint inherits.
TranslationConstraint< DataTypes > * removeConstraint(int index)
~TranslationConstraint()
Definition: TranslationConstraint.h:63
void draw()
– VisualModel interface
void projectResponse(MatrixDerivRowType &dx)
Definition: TranslationConstraint.h:79
void update()
Definition: TranslationConstraint.h:84
virtual void projectVelocity(VecDeriv &v)
project dx to constrained space (dx models a velocity)
DataTypes::Deriv Deriv
Definition: TranslationConstraint.h:56