mbsimflexiblebody  4.0.0
MBSim Flexible Body Module
angles.h
1/* Copyright (C) 2004-2015 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: thorsten.schindler@mytum.de
18 */
19
20#ifndef ANGLES_H_
21#define ANGLES_H_
22
23#include <mbsim/functions/function.h>
24
25namespace MBSimFlexibleBody {
26
35 class Angles : public MBSim::Function<fmatvec::RotMat3(fmatvec::VecV, double)> {
36 public:
44 ~Angles() override;
45
46 /* INTERFACE OF ROTATION */
47 fmatvec::RotMat3 operator()(const fmatvec::VecV &q, const double &t) override;
48 /***************************************************/
49
50 /* INTERFACE */
54 virtual fmatvec::Vec3 computet(const fmatvec::Vec& q) const = 0;
55
60 virtual fmatvec::Vec3 computen(const fmatvec::Vec& q) const = 0;
61
66 virtual fmatvec::Vec3 computeb(const fmatvec::Vec& q) const = 0;
67
72 virtual fmatvec::Vec computentil(const fmatvec::Vec& q) const = 0;
73
78 virtual fmatvec::Vec computebtil(const fmatvec::Vec& q) const = 0;
79
84 virtual fmatvec::SqrMat computetq(const fmatvec::Vec& q) const = 0;
85
90 virtual fmatvec::SqrMat computenq(const fmatvec::Vec& q) const = 0;
91
96 virtual fmatvec::SqrMat computebq(const fmatvec::Vec& q) const = 0;
97
102 virtual fmatvec::SqrMat computentilq(const fmatvec::Vec& q) const = 0;
103
108 virtual fmatvec::SqrMat computebtilq(const fmatvec::Vec& q) const = 0;
109
114 virtual fmatvec::Mat computetq2(const fmatvec::Vec& q) const = 0;
115
120 virtual fmatvec::Mat computenq2(const fmatvec::Vec& q) const = 0;
121
126 virtual fmatvec::Mat computebq2(const fmatvec::Vec& q) const = 0;
127
132 virtual fmatvec::Mat computentilq2(const fmatvec::Vec& q) const = 0;
133
138 virtual fmatvec::Mat computebtilq2(const fmatvec::Vec& q) const = 0;
139 /********************************************************/
140
141 /* NODAL FUNCTIONS */
147 fmatvec::Vec computett(const fmatvec::Vec& q,const fmatvec::Vec& qt) const;
148
154 fmatvec::Vec computent(const fmatvec::Vec& q,const fmatvec::Vec& qt) const;
155
161 fmatvec::Vec computebt(const fmatvec::Vec& q,const fmatvec::Vec& qt) const;
162
168 fmatvec::Vec computentilt(const fmatvec::Vec& q,const fmatvec::Vec& qt) const;
169
175 fmatvec::Vec computebtilt(const fmatvec::Vec& q,const fmatvec::Vec& qt) const;
176
182 fmatvec::SqrMat computetqt(const fmatvec::Vec& q,const fmatvec::Vec& qt) const;
183
189 fmatvec::SqrMat computenqt(const fmatvec::Vec& q,const fmatvec::Vec& qt) const;
190
196 fmatvec::SqrMat computebqt(const fmatvec::Vec& q,const fmatvec::Vec& qt) const;
197
203 fmatvec::SqrMat computentilqt(const fmatvec::Vec& q,const fmatvec::Vec& qt) const;
204
210 fmatvec::SqrMat computebtilqt(const fmatvec::Vec& q,const fmatvec::Vec& qt) const;
211
217 virtual fmatvec::Vec computeOmega(const fmatvec::Vec& q,const fmatvec::Vec& qt) const;
218
223 virtual fmatvec::SqrMat computeT(const fmatvec::Vec& q) const; // JacobianOfRotation = G
224 /********************************************************/
225 };
226
227}
228
229#endif /*ANGLES_H_*/
230
node class for angle parametrisation
Definition: angles.h:35
virtual fmatvec::SqrMat computentilq(const fmatvec::Vec &q) const =0
virtual fmatvec::SqrMat computetq(const fmatvec::Vec &q) const =0
virtual fmatvec::SqrMat computebq(const fmatvec::Vec &q) const =0
fmatvec::Vec computebtilt(const fmatvec::Vec &q, const fmatvec::Vec &qt) const
Definition: angles.cc:63
virtual fmatvec::Mat computentilq2(const fmatvec::Vec &q) const =0
virtual fmatvec::Mat computenq2(const fmatvec::Vec &q) const =0
fmatvec::SqrMat computentilqt(const fmatvec::Vec &q, const fmatvec::Vec &qt) const
Definition: angles.cc:99
fmatvec::Vec computett(const fmatvec::Vec &q, const fmatvec::Vec &qt) const
Definition: angles.cc:39
virtual fmatvec::SqrMat computeT(const fmatvec::Vec &q) const
Definition: angles.cc:134
virtual fmatvec::Vec3 computet(const fmatvec::Vec &q) const =0
virtual fmatvec::Vec3 computeb(const fmatvec::Vec &q) const =0
virtual fmatvec::Vec computebtil(const fmatvec::Vec &q) const =0
fmatvec::SqrMat computenqt(const fmatvec::Vec &q, const fmatvec::Vec &qt) const
Definition: angles.cc:79
virtual fmatvec::Mat computebtilq2(const fmatvec::Vec &q) const =0
fmatvec::Vec computent(const fmatvec::Vec &q, const fmatvec::Vec &qt) const
Definition: angles.cc:45
fmatvec::SqrMat computebtilqt(const fmatvec::Vec &q, const fmatvec::Vec &qt) const
Definition: angles.cc:109
~Angles() override
destructor
virtual fmatvec::Vec computentil(const fmatvec::Vec &q) const =0
virtual fmatvec::SqrMat computenq(const fmatvec::Vec &q) const =0
virtual fmatvec::Vec3 computen(const fmatvec::Vec &q) const =0
fmatvec::SqrMat computetqt(const fmatvec::Vec &q, const fmatvec::Vec &qt) const
Definition: angles.cc:69
virtual fmatvec::Vec computeOmega(const fmatvec::Vec &q, const fmatvec::Vec &qt) const
Definition: angles.cc:119
virtual fmatvec::Mat computetq2(const fmatvec::Vec &q) const =0
fmatvec::SqrMat computebqt(const fmatvec::Vec &q, const fmatvec::Vec &qt) const
Definition: angles.cc:89
fmatvec::Vec computebt(const fmatvec::Vec &q, const fmatvec::Vec &qt) const
Definition: angles.cc:51
virtual fmatvec::SqrMat computebtilq(const fmatvec::Vec &q) const =0
fmatvec::Vec computentilt(const fmatvec::Vec &q, const fmatvec::Vec &qt) const
Definition: angles.cc:57
virtual fmatvec::Mat computebq2(const fmatvec::Vec &q) const =0