mbsim  4.0.0
MBSim Kernel
floating_relative_contour_frame.h
1/* Copyright (C) 2004-2014 MBSim Development Team
2 *
3 * This library is free software; you can redistribute it and/or
4 * modify it under the terms of the GNU Lesser General Public
5 * License as published by the Free Software Foundation; either
6 * version 2.1 of the License, or (at your option) any later version.
7 *
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 * Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public
14 * License along with this library; if not, write to the Free Software
15 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16 *
17 * Contact: martin.o.foerg@googlemail.com
18 */
19
20#ifndef _FLOATING_RELATIVE_CONTOUR_FRAME_H__
21#define _FLOATING_RELATIVE_CONTOUR_FRAME_H__
22
23#include "mbsim/frames/contour_frame.h"
24
25namespace MBSim {
26
28
29 public:
30 FloatingRelativeContourFrame(const std::string &name = "dummy", const fmatvec::Vec3 &r=fmatvec::Vec3(), const fmatvec::SqrMat3 &A=fmatvec::SqrMat3(fmatvec::EYE), Frame *refFrame=nullptr) : ContourFrame(name), R(refFrame), RrRP(r), ARP(A) {
31 }
32
33 void setRelativePosition(const fmatvec::Vec3 &r) { RrRP = r; }
34 void setRelativeOrientation(const fmatvec::SqrMat3 &A) { ARP = A; }
35 void setFrameOfReference(Frame *frame) { R = frame; }
36
37 const fmatvec::Vec3& getRelativePosition() const { return RrRP; }
38 const fmatvec::SqrMat3& getRelativeOrientation() const { return ARP; }
39 const Frame* getFrameOfReference() const { return R; }
40
41 const fmatvec::Vec3& evalGlobalRelativePosition() { if(updPos) updatePositions(); return WrRP; }
42
43 void updatePositions() override;
44 void updateVelocities() override;
45 void updateAccelerations() override;
46 void updateJacobians(int j=0) override;
47 void updateGyroscopicAccelerations() override;
48
49 protected:
50 Frame *R;
51 fmatvec::Vec3 RrRP, WrRP;
52 fmatvec::SqrMat3 ARP;
53 };
54
55}
56
57#endif
Definition: contour_frame.h:27
std::string name
name of element
Definition: element.h:260
Definition: floating_relative_contour_frame.h:27
cartesian frame on bodies used for application of e.g. links and loads
Definition: frame.h:39
namespace MBSim
Definition: bilateral_constraint.cc:30