00001 #ifndef SIGEL_ROBOT_SIG_ROTATIONALJOINT_H 00002 #define SIGEL_ROBOT_SIG_ROTATIONALJOINT_H 00003 00004 namespace SIGEL_Robot { class SIG_RotationalJoint; } 00005 00006 #include "qstring.h" 00007 #include "pointvector.h" 00008 00009 #include "SIGEL_Robot/SIG_Joint.h" 00010 00011 namespace SIGEL_Robot { 00018 class SIG_RotationalJoint : public SIG_Joint { 00019 private: 00020 DL_vector leftBase, rightBase; 00021 DL_vector leftDir, rightDir; 00022 DL_vector leftHand, rightHand; 00023 DL_Scalar minimum, maximum, initial; 00024 public: 00025 SIG_RotationalJoint (SIG_Robot *par, QString n, int nr = -1); 00026 SIG_RotationalJoint (SIG_Robot *par, QTextStream & tx); 00027 virtual ~SIG_RotationalJoint (void); 00028 virtual JointType getJointType (void) const; 00029 void setLeftPoints (DL_vector B, DL_vector D, DL_vector H); 00030 void setRightPoints (DL_vector B, DL_vector D, DL_vector H); 00031 void setRange (DL_Scalar mn, DL_Scalar mx, DL_Scalar ii); 00032 DL_vector getLeftBase (void) const; 00033 DL_vector getLeftDir (void) const; 00034 DL_vector getLeftHand (void) const; 00035 DL_vector getRightBase (void) const; 00036 DL_vector getRightDir (void) const; 00037 DL_vector getRightHand (void) const; 00038 DL_Scalar getMin (void) const; 00039 DL_Scalar getMax (void) const; 00040 DL_Scalar getIni (void) const; 00041 00042 virtual void transformPoints (SIG_Link *side, 00043 DL_vector mov, DL_matrix rot); 00044 virtual void getGeomRelation 00045 (DL_vector &t, DL_matrix &o, SIG_Link *origin); 00046 virtual void getMDH (SIG_Link * & predecessor, 00047 double & a, double & alpha, 00048 double & d, double & theta, 00049 double & screwD, double & screwTheta); 00050 virtual void writeToFileTransfer (QTextStream & tx); 00051 }; 00052 } 00053 00054 #endif // SIGEL_ROBOT_SIG_ROTATIONALJOINT_H