Program listing for file mechanics/src/joints/KneeJointR.hpp

Program listing for file mechanics/src/joints/KneeJointR.hpp#

 1#ifndef KneeJointRELATION_H
 2#define KneeJointRELATION_H
 3
 4#include <MechanicsFwd.hpp>
 5#include <SiconosFwd.hpp>
 6#include <NewtonEulerJointR.hpp>
 7
 8
 9class KneeJointR : public NewtonEulerJointR
10{
11protected:
12
13  ACCEPT_SERIALIZATION(KneeJointR);
14
15
16  SP::SiconosVector _P0;
17
18
19  double _G1P0x;
20  double _G1P0y;
21  double _G1P0z;
22
23
24  double _G2P0x;
25  double _G2P0y;
26  double _G2P0z;
27
28
29public:
30
31
32
33  KneeJointR();
34
35
36  KneeJointR(SP::SiconosVector P, bool absoluteRef,
37             SP::NewtonEulerDS d1 = SP::NewtonEulerDS(),
38             SP::NewtonEulerDS d2 = SP::NewtonEulerDS());
39
40
41  virtual ~KneeJointR() {};
42
43  virtual void initialize(Interaction& inter);
44
45
46  virtual void setBasePositions(SP::SiconosVector q1,
47                                SP::SiconosVector q2 = SP::SiconosVector());
48
49
50  void checkInitPos(SP::SiconosVector q1, SP::SiconosVector q2);
51
52
53  virtual unsigned int numberOfConstraints() { return 3; }
54
55
56  virtual unsigned int numberOfDoF() { return 3; }
57
58
59  virtual DoF_Type typeOfDoF(unsigned int axis) {
60    if (axis<3) return DOF_TYPE_ANGULAR;
61    else return DOF_TYPE_INVALID;
62  };
63
64  virtual void computeJachq(double time, Interaction& inter, SP::BlockVector q0);
65
66
67
68  virtual void computeh(double time, const BlockVector& q0, SiconosVector& y);
69
70  virtual void computeDotJachq(double time, const BlockVector& workQ, BlockVector& workZ, const BlockVector& workQdot);
71
72  virtual void computeDotJachq(double time, SP::SiconosVector qdot1, SP::SiconosVector qdot2=SP::SiconosVector());
73
74  SP::SiconosVector P() { return _P0; }
75
76protected:
77
78  virtual void Jd1d2(double X1, double Y1, double Z1, double q10, double q11, double q12, double q13,
79                     double X2, double Y2, double Z2, double q20, double q21, double q22, double q23);
80  virtual void Jd1(double X1, double Y1, double Z1, double q10, double q11, double q12, double q13);
81
82
83  virtual void DotJd1d2(double Xdot1, double Ydot1, double Zdot1, double qdot10, double qdot11, double qdot12, double qdot13,
84                        double Xdot2, double Ydot2, double Zdot2, double qdot20, double qdot21, double qdot22, double qdot23);
85  virtual void DotJd1(double Xdot1, double Ydot1, double Zdot1, double qdot10, double qdot11, double qdot12, double qdot13);
86
87
88
89  double Hx(double X1, double Y1, double Z1, double  q10, double q11, double q12, double q13,
90            double X2, double Y2, double Z2, double q20, double q21, double q22, double q23);
91  double Hy(double X1, double Y1, double Z1, double q10, double q11, double q12, double q13,
92            double X2, double Y2, double Z2, double q20, double q21, double q22, double q23);
93  double Hz(double X1, double Y1, double Z1, double q10, double q11, double q12, double q13,
94            double X2, double Y2, double Z2, double q20, double q21, double q22, double q23);
95};
96#endif