24 #include "mbsim/element.h"
25 #include "mbsim/contour_pdata.h"
26 #include "mbsim/frame.h"
27 #include "mbsim/mbsim_event.h"
29 #ifdef HAVE_OPENMBVCPPINTERFACE
38 class ContourPointData;
39 class ContactKinematics;
65 virtual std::string
getType()
const {
return "Contour"; }
66 virtual void plot(
double t,
double dt = 1);
121 virtual fmatvec::Vec2
computeLagrangeParameter(
const fmatvec::Vec3 &WrPoint) {THROW_MBSIMERROR(
"computeLagrangeParameter(const fmatvec::Vec3 &WrPoint): Not implemented for this contour: \"" + this->
getType() +
"\".");
return 0; }
187 Frame* getFrame() {
return R; }
188 Frame* getFrameOfReference() {
return R; }
189 const fmatvec::Vec3& getReferencePosition()
const {
return R->getPosition(); }
190 const fmatvec::SqrMat3& getReferenceOrientation()
const {
return R->getOrientation(); }
191 const fmatvec::Vec3& getReferenceVelocity()
const {
return R->getVelocity(); }
192 const fmatvec::Vec3& getReferenceAngularVelocity()
const {
return R->getAngularVelocity(); }
193 const fmatvec::Mat3xV& getReferenceJacobianOfTranslation(
int j=0)
const {
return R->getJacobianOfTranslation(j); }
194 const fmatvec::Mat3xV& getReferenceJacobianOfRotation(
int j=0)
const {
return R->getJacobianOfRotation(j); }
195 fmatvec::Mat3xV& getReferenceJacobianOfTranslation(
int j=0) {
return R->getJacobianOfTranslation(j); }
196 fmatvec::Mat3xV& getReferenceJacobianOfRotation(
int j=0) {
return R->getJacobianOfRotation(j); }
197 const fmatvec::Vec3& getReferenceGyroscopicAccelerationOfTranslation()
const {
return R->getGyroscopicAccelerationOfTranslation(); }
198 const fmatvec::Vec3& getReferenceGyroscopicAccelerationOfRotation()
const {
return R->getGyroscopicAccelerationOfRotation(); }
199 fmatvec::Vec3& getReferenceGyroscopicAccelerationOfTranslation() {
return R->getGyroscopicAccelerationOfTranslation(); }
200 fmatvec::Vec3& getReferenceGyroscopicAccelerationOfRotation() {
return R->getGyroscopicAccelerationOfRotation(); }
202 virtual int gethSize(
int i=0)
const {
return hSize[i]; }
203 virtual int gethInd(
int i=0)
const {
return hInd[i]; }
204 virtual void sethSize(
int size,
int i=0) {
hSize[i] = size; }
205 virtual void sethInd(
int ind,
int i=0) { hInd[i] = ind; }
212 void setFrameOfReference(Frame *frame) {
R = frame; }
213 void setFrameOfReference(
const std::string &frame) { saved_frameOfReference = frame; }
215 virtual void updateStateDependentVariables(
double t) {}
216 virtual void updateJacobians(
double t,
int j=0) {}
217 virtual void updateStateDerivativeDependentVariables(
const fmatvec::Vec &ud,
double t) {}
219 virtual void initializeUsingXML(xercesc::DOMElement *element);
220 virtual xercesc::DOMElement* writeXMLFile(xercesc::DOMNode *element);
238 std::string saved_frameOfReference;
259 std::string
getType()
const {
return "RigidContour"; }
260 virtual void plot(
double t,
double dt = 1);
276 #ifdef HAVE_OPENMBVCPPINTERFACE
277 boost::shared_ptr<OpenMBV::RigidBody>& getOpenMBVRigidBody() {
278 return openMBVRigidBody;
281 void setOpenMBVRigidBody(
const boost::shared_ptr<OpenMBV::RigidBody> &ombvBody) {
282 openMBVRigidBody = ombvBody;
287 #ifdef HAVE_OPENMBVCPPINTERFACE
288 boost::shared_ptr<OpenMBV::RigidBody> openMBVRigidBody;
virtual void updateJacobiansForFrame(ContourPointData &cp, int j=0)
JACOBIAN for contour (normal, tangent, binormal) is set by implementation class.
Definition: contour.cc:157
Feature
different interest features for frames
Definition: frame.h:44
basic class for rigid contours
Definition: contour.h:247
virtual void updateKinematicsForFrame(ContourPointData &cp, Frame::Feature ff)=0
cartesian kinematic for contour (normal, tangent, binormal) is set by implementation class ...
virtual fmatvec::Vec3 computeVelocity(ContourPointData &cp)
Definition: contour.h:100
virtual fmatvec::Vec3 computeAngularVelocity(ContourPointData &cp)
Definition: contour.h:106
RigidContour(const std::string &name, Frame *R=0)
constructor
Definition: contour.h:253
ContactKinematics * findContactPairingWith(std::string type0, std::string type1)
contact search for RigidContours
Definition: contour.cc:212
virtual fmatvec::Vec2 computeLagrangeParameter(const fmatvec::Vec3 &WrPoint)
projects the point on the contour to compute the Lagrange parameter
Definition: contour.h:121
int hSize[2]
object the contour belongs to
Definition: contour.h:231
virtual void updateJacobiansForFrame(ContourPointData &cp, int j=0)=0
JACOBIAN for contour (normal, tangent, binormal) is set by implementation class.
virtual fmatvec::Vec3 computeNormal(ContourPointData &cp)
Definition: contour.h:88
Contour(const std::string &name, Frame *R=0)
constructor
Definition: contour.cc:47
basic class for contour definition for rigid (which do not know about their shape) and flexible (they...
Definition: contour.h:51
basic class of MBSim mainly for plotting
Definition: element.h:58
virtual void init(InitStage stage)
TODO.
Definition: contour.cc:171
std::string getType() const
Definition: contour.h:259
virtual void setReferenceVelocity(const fmatvec::Vec3 &WvP)
Definition: contour.h:136
Frame * R
coordinate system of contour
Definition: contour.h:236
virtual void setReferenceOrientation(const fmatvec::SqrMat3 &AWC)
Definition: contour.h:131
virtual ~Contour()
destructor
Definition: contour.cc:55
virtual void setReferenceAcceleration(const fmatvec::Vec3 &WaP)
Definition: contour.h:166
virtual fmatvec::Vec3 computePosition(ContourPointData &cp)
Definition: contour.h:94
virtual void plot(double t, double dt=1)
plots time dependent data
Definition: contour.cc:191
virtual void setReferenceJacobianOfTranslation(const fmatvec::Mat3xV &WJP, int j=0)
Definition: contour.h:146
virtual std::string getType() const
Definition: contour.h:65
virtual void setReferenceAngularAcceleration(const fmatvec::Vec3 &WpsiC)
Definition: contour.h:171
InitStage
The stages of the initialization.
Definition: element.h:97
virtual void setReferenceGyroscopicAccelerationOfRotation(const fmatvec::Vec3 &WjR, int j=0)
Definition: contour.h:161
std::string name
name of element
Definition: element.h:290
virtual void setReferenceAngularVelocity(const fmatvec::Vec3 &WomegaC)
Definition: contour.h:141
cartesian frame on bodies used for application of e.g. links and loads
Definition: frame.h:39
virtual void updateKinematicsForFrame(ContourPointData &cp, Frame::Feature ff)
cartesian kinematic for contour (normal, tangent, binormal) is set by implementation class ...
Definition: contour.cc:147
struct for data-management for single point on a contour to describe contact kinematics ...
Definition: contour_pdata.h:38
virtual void setReferenceJacobianOfRotation(const fmatvec::Mat3xV &WJR, int j=0)
Definition: contour.h:156
virtual void setReferenceGyroscopicAccelerationOfTranslation(const fmatvec::Vec3 &WjP, int j=0)
Definition: contour.h:151
virtual void setReferencePosition(const fmatvec::Vec3 &WrOP)
Definition: contour.h:126
virtual void plot(double t, double dt=1)
plots time dependent data
Definition: contour.cc:111
virtual double computeCurvature(ContourPointData &cp)
Definition: contour.h:112
virtual ContactKinematics * findContactPairingWith(std::string type0, std::string type1)=0
find contact kinematics
virtual void init(InitStage stage)
TODO.
Definition: contour.cc:57