20#ifndef _PLANAR_CONTOUR_H_
21#define _PLANAR_CONTOUR_H_
23#include "mbsim/contours/rigid_contour.h"
24#include "mbsim/frames/frame.h"
25#include "mbsim/utils/boost_parameters.h"
26#include <mbsim/utils/openmbv_utils.h>
30 template <
class Sig>
class Function;
55 void init(
InitStage stage,
const InitConfigSet &config)
override;
56 fmatvec::Vec3 evalKrPS(
const fmatvec::Vec2 &zeta)
override;
57 fmatvec::Vec3 evalKs(
const fmatvec::Vec2 &zeta)
override;
58 fmatvec::Vec3 evalKt(
const fmatvec::Vec2 &zeta)
override {
return zero3; }
59 fmatvec::Vec3 evalKn(
const fmatvec::Vec2 &zeta)
override {
return crossProduct(evalKu(zeta),ez); }
60 fmatvec::Vec3 evalParDer1Ks(
const fmatvec::Vec2 &zeta)
override;
61 fmatvec::Vec3 evalParDer1Kt(
const fmatvec::Vec2 &zeta)
override {
return zero3; }
62 fmatvec::Vec3 evalParDer1Kn(
const fmatvec::Vec2 &zeta)
override;
64 fmatvec::Vec3
evalWn(
const fmatvec::Vec2 &zeta)
override {
return crossProduct(
evalWu(zeta),
R->evalOrientation().col(2)); }
66 fmatvec::Vec2 evalCurvatures(
const fmatvec::Vec2 &zeta)
override;
70 void setContourFunction(
Function<fmatvec::Vec3(
double)> *func);
71 Function<fmatvec::Vec3(
double)>* getContourFunction() {
return funcCrPC; }
74 BOOST_PARAMETER_MEMBER_FUNCTION( (
void), enableOpenMBV, tag, (optional (nodes,(
const std::vector<double>&),std::vector<double>())(filled,(
bool),0)(diffuseColor,(
const fmatvec::Vec3&),fmatvec::Vec3(std::vector<double>{-1,1,1}))(transparency,(
double),0)(pointSize,(
double),0)(lineWidth,(
double),0))) {
75 ombv = std::shared_ptr<OpenMBVPlanarContour>(
new OpenMBVPlanarContour(nodes,filled,diffuseColor,transparency,pointSize,lineWidth));
76 openMBVRigidBody=ombv->createOpenMBV();
79 void initializeUsingXML(xercesc::DOMElement *element)
override;
81 void setNodes(
const std::vector<double> &nodes_) { etaNodes = nodes_; }
83 bool isZetaOutside(
const fmatvec::Vec2 &zeta)
override {
return open and (zeta(0) < etaNodes[0] or zeta(0) > etaNodes[etaNodes.size()-1]); }
85 void setOpen(
bool open_=
true) { open = open_; }
88 Function<fmatvec::Vec3(
double)> * funcCrPC{
nullptr};
90 std::shared_ptr<OpenMBVPlanarContour> ombv;
InitStage
The stages of the initialization.
Definition: element.h:62
std::string name
name of element
Definition: element.h:260
cartesian frame on bodies used for application of e.g. links and loads
Definition: frame.h:39
Definition: function.h:53
analytical description of contours with one contour parameter
Definition: planar_contour.h:38
void init(InitStage stage, const InitConfigSet &config) override
plots time series header
Definition: planar_contour.cc:59
fmatvec::Vec3 evalWn(const fmatvec::Vec2 &zeta) override
Definition: planar_contour.h:64
~PlanarContour() override
destructor
Definition: planar_contour.cc:36
PlanarContour(const std::string &name="", Frame *R=nullptr)
constructor
Definition: planar_contour.h:44
basic class for rigid contours
Definition: rigid_contour.h:37
fmatvec::Vec3 evalWu(const fmatvec::Vec2 &zeta) override
Definition: rigid_contour.cc:134
Frame * R
coordinate system of contour
Definition: rigid_contour.h:135
namespace MBSim
Definition: bilateral_constraint.cc:30