20 #ifndef _FLEXIBLE_BAND_H_
21 #define _FLEXIBLE_BAND_H_
23 #include "mbsimFlexibleBody/contours/contour1s.h"
24 #include "mbsimFlexibleBody/utils/contact_utils.h"
25 #include "mbsim/utils/eps.h"
27 #include <openmbvcppinterface/spineextrusion.h>
28 #include "mbsim/utils/boost_parameters.h"
29 #include <mbsim/utils/openmbv_utils.h>
35 BOOST_PARAMETER_NAME(numberOfSpinePoints)
39 namespace MBSimFlexibleBody {
50 virtual std::string getType()
const {
return "FlexibleBand"; }
51 void init(InitStage stage);
57 void setWidth(
double width_) {
width = width_; }
58 double getWidth()
const {
return width; }
60 void setRelativePosition(
const fmatvec::Vec2 &r);
61 void setRelativeOrientation(
double al);
63 const fmatvec::Vec3& getRelativePosition()
const {
return RrRP; }
64 const fmatvec::SqrMat3& getRelativeOrientation()
const {
return ARK; }
66 virtual fmatvec::Vec3 evalPosition(
const fmatvec::Vec2 &zeta) {
return evalPosition(zeta(0)); }
67 virtual fmatvec::Vec3 evalWs(
const fmatvec::Vec2 &zeta) {
return evalWs(zeta(0)); }
68 virtual fmatvec::Vec3 evalWt(
const fmatvec::Vec2 &zeta) {
return evalWt(zeta(0)); }
69 virtual fmatvec::Vec3 evalWu(
const fmatvec::Vec2 &zeta) {
return evalWs(zeta); }
70 virtual fmatvec::Vec3 evalWv(
const fmatvec::Vec2 &zeta) {
return evalWt(zeta); }
72 virtual bool isZetaOutside(
const fmatvec::Vec2 &zeta);
74 void updatePositions(
double s);
76 fmatvec::Vec3 evalPosition(
double s) {
if(fabs(s-sOld)>MBSim::macheps()) updatePositions(s);
return WrOP; }
77 fmatvec::Vec3 evalWs(
double s) {
if(fabs(s-sOld)>MBSim::macheps()) updatePositions(s);
return Ws; }
78 fmatvec::Vec3 evalWt(
double s) {
if(fabs(s-sOld)>MBSim::macheps()) updatePositions(s);
return Wt; }
82 void setContourOfReference(
Contour1s *contour_) { contour = contour_; }
84 MBSim::ContactKinematics * findContactPairingWith(std::string type0, std::string type1) {
return findContactPairingFlexible(type0.c_str(), type1.c_str()); }
86 void setNodes(
const std::vector<double> &nodes_) { etaNodes = nodes_; }
88 BOOST_PARAMETER_MEMBER_FUNCTION( (
void), enableOpenMBV, MBSim::tag, (optional (numberOfSpinePoints,(
int),10)(diffuseColor,(
const fmatvec::Vec3&),
"[-1;1;1]")(transparency,(
double),0))) {
89 openMBVSpineExtrusion = OpenMBV::ObjectFactory::create<OpenMBV::SpineExtrusion>();
90 openMBVSpineExtrusion->setNumberOfSpinePoints(numberOfSpinePoints);
101 fmatvec::Vec3 RrRP, WrOP, Ws, Wt;
102 fmatvec::SqrMat3 ARK;
108 std::shared_ptr<OpenMBV::SpineExtrusion> openMBVSpineExtrusion;
double width
width of flexible band
Definition: flexible_band.h:99
FlexibleBand(const std::string &name)
constructor
Definition: flexible_band.h:47
basic class for contours described by one contour parameter
Definition: contour1s.h:35
Contour1s(const std::string &name)
constructor
Definition: contour1s.h:41
Definition: flexible_band.h:41