20#ifndef _PLANAR_NURBS_CONTOUR_H_
21#define _PLANAR_NURBS_CONTOUR_H_
23#include "mbsim/contours/rigid_contour.h"
24#include "mbsim/utils/boost_parameters.h"
25#include "mbsim/utils/openmbv_utils.h"
26#include "mbsim/numerics/nurbs/nurbs_curve.h"
27#include <openmbvcppinterface/nurbscurve.h>
59 void init(
InitStage stage,
const InitConfigSet &config)
override;
60 fmatvec::Vec3 evalKrPS(
const fmatvec::Vec2 &zeta)
override;
61 fmatvec::Vec3 evalKs(
const fmatvec::Vec2 &zeta)
override;
62 fmatvec::Vec3 evalKt(
const fmatvec::Vec2 &zeta)
override;
63 fmatvec::Vec3 evalKn(
const fmatvec::Vec2 &zeta)
override;
64 fmatvec::Vec3 evalParDer1Ks(
const fmatvec::Vec2 &zeta)
override;
68 void setInterpolation(Interpolation interpolation_) { interpolation = interpolation_; }
69 void setControlPoints(
const fmatvec::MatVx4 &cp_) { cp <<= cp_; }
70 void setControlPoints(
const fmatvec::MatVx3 &cp_);
71 void setControlPoints(
const std::vector<fmatvec::Vec4> &cp_);
72 void setControlPoints(
const std::vector<fmatvec::Vec3> &cp_);
73 void setNumberOfControlPoints(
int n_) { n = n_; }
74 void setKnotVector(
const fmatvec::VecV &knot_) { knot <<= knot_; }
75 void setDegree(
int degree_) { degree = degree_; }
78 BOOST_PARAMETER_MEMBER_FUNCTION( (
void), enableOpenMBV, tag, (optional (nodes,(
const std::vector<double>&),std::vector<double>())(diffuseColor,(
const fmatvec::Vec3&),fmatvec::Vec3(std::vector<double>{-1,1,1}))(transparency,(
double),0)(pointSize,(
double),0)(lineWidth,(
double),0))) {
79 OpenMBVColoredBody ombv(diffuseColor,transparency,pointSize,lineWidth);
83 void initializeUsingXML(xercesc::DOMElement *element)
override;
85 bool isZetaOutside(
const fmatvec::Vec2 &zeta)
override {
return open and (zeta(0) < etaNodes[0] or zeta(0) > etaNodes[etaNodes.size()-1]); }
87 void setOpen(
bool open_=
true) { open = open_; }
90 void updateHessianMatrix(
double eta);
91 const fmatvec::MatVx4& evalHessianMatrix(
double eta){
if(fabs(eta-etaOld)>1e-13) updateHessianMatrix(eta);
return hess; }
93 Interpolation interpolation{none};
101 fmatvec::MatVx4 hess;
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
nurbs curve
Definition: planar_nurbs_contour.h:35
~PlanarNurbsContour() override=default
destructor
void init(InitStage stage, const InitConfigSet &config) override
plots time series header
Definition: planar_nurbs_contour.cc:61
PlanarNurbsContour(const std::string &name="", Frame *R=nullptr)
constructor
Definition: planar_nurbs_contour.h:48
basic class for rigid contours
Definition: rigid_contour.h:37
Frame * R
coordinate system of contour
Definition: rigid_contour.h:135
namespace MBSim
Definition: bilateral_constraint.cc:30