/usr/include/sofa/filemanager/sofapml/LMLConstraint.h is in libsofa1-dev 1.0~beta4-12.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | /******************************************************************************
* SOFA, Simulation Open-Framework Architecture, version 1.0 beta 4 *
* (c) 2006-2009 MGH, INRIA, USTL, UJF, CNRS *
* *
* This library is free software; you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as published by *
* the Free Software Foundation; either version 2.1 of the License, or (at *
* your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, but WITHOUT *
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License *
* for more details. *
* *
* You should have received a copy of the GNU Lesser General Public License *
* along with this library; if not, write to the Free Software Foundation, *
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *
*******************************************************************************
* SOFA :: Modules *
* *
* Authors: The SOFA Team and external contributors (see Authors.txt) *
* *
* Contact information: contact@sofa-framework.org *
******************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
//-------------------------------------------------------------------------
// -- Description --
// LMLConstraint imports from a LML file (see LMLReader class) imposed displacements,
// including translations and fixed points, and traduces it to sofa constraints.
// It inherits from Constraint sofa core class.
//-------------------------------------------------------------------------
#ifndef LMLCONSTRAINT_H
#define LMLCONSTRAINT_H
#include "sofa/core/componentmodel/behavior/Constraint.h"
#include "sofa/core/componentmodel/behavior/MechanicalState.h"
#include "sofa/core/VisualModel.h"
#include "sofapml.h"
#include <vector>
#include <map>
#include <Loads.h>
namespace sofa
{
namespace filemanager
{
namespace pml
{
using namespace sofa::core;
using namespace sofa::core::componentmodel::behavior;
using namespace std;
template<class DataTypes>
class LMLConstraint : public Constraint<DataTypes>, public VisualModel
{
public :
///template types
typedef typename DataTypes::VecCoord VecCoord;
typedef typename DataTypes::VecDeriv VecDeriv;
typedef typename DataTypes::VecCoord::iterator VecCoordIterator;
typedef typename DataTypes::VecDeriv::iterator VecDerivIterator;
typedef typename DataTypes::Coord Coord;
typedef typename DataTypes::Deriv Deriv;
///constructor
LMLConstraint(Loads* loadsList, const map<unsigned int, unsigned int> &atomIndexToDOFIndex, MechanicalState<DataTypes> *mm);
~LMLConstraint(){ /*delete loads;*/}
/// return the targets list
std::vector<unsigned int> getTargets() {return targets;}
///fix or translate a point
LMLConstraint<DataTypes>* addConstraint(unsigned int index, Deriv trans);
LMLConstraint<DataTypes>* removeConstraint(int index);
/// Constraint inherits
void projectResponse(VecDeriv& dx); ///< project dx to constrained space
virtual void projectVelocity(VecDeriv& ){} ///< project dx to constrained space (dx models a velocity)
virtual void projectPosition(VecCoord& x); ///< project x to constrained space (x models a position)
/// -- VisualModel interface
void draw();
void initTextures() { }
void update() { }
private:
/// fix a point on the axe specified (0=x, 1=y, 2=z)
void fixDOF(int index, int axe);
MechanicalState<DataTypes> * mmodel;
/// the set of vertex targets
std::vector<unsigned int> targets;
/// list of translations
VecDeriv translations;
/// list of fixed directions
VecDeriv directionsNULLs;
VecDeriv initPos;
/// the lml loads
Loads * loads;
///link between PML object indexes and sofa Dofs Indexes
map<unsigned int, unsigned int> atomToDOFIndexes;
};
#if defined(WIN32) && !defined(SOFA_BUILD_FILEMANAGER_PML)
extern template class SOFA_BUILD_FILEMANAGER_PML_API LMLConstraint<Vec3Types>;
#endif
}
}
}
#endif //LMLCONSTRAINT_H
|