00001 #ifndef SIGEL_ROBOT_SIG_CYLINDRICALJOINT_H 00002 #define SIGEL_ROBOT_SIG_CYLINDRICALJOINT_H 00003 00004 namespace SIGEL_Robot { class SIG_CylindricalJoint; } 00005 00006 #include "qstring.h" 00007 #include "pointvector.h" 00008 #include "SIGEL_Robot/SIG_Robot.h" 00009 #include "SIGEL_Robot/SIG_Joint.h" 00010 00011 namespace SIGEL_Robot 00012 { 00013 00021 class SIG_CylindricalJoint : public SIG_Joint { 00022 private: 00023 DL_vector leftBase, rightBase; 00024 DL_vector leftDir, rightDir; 00025 DL_vector leftHand, rightHand; 00026 DL_Scalar rotMin, rotMax, rotIni; 00027 DL_Scalar traMin, traMax, traIni; 00028 public: 00029 SIG_CylindricalJoint (SIG_Robot *par, QString n, int nr = -1); 00030 SIG_CylindricalJoint (SIG_Robot *par, QTextStream & tx); 00031 virtual ~SIG_CylindricalJoint (void); 00032 virtual JointType getJointType (void) const; 00033 00034 void setLeftPoints (DL_vector B, DL_vector D, DL_vector H); 00035 void setRightPoints (DL_vector B, DL_vector D, DL_vector H); 00036 void setRotationalRange (DL_Scalar mn, DL_Scalar mx, DL_Scalar ii); 00037 void setTranslationalRange (DL_Scalar mn, DL_Scalar mx, DL_Scalar ii); 00038 00039 DL_vector getLeftBase (void) const; 00040 DL_vector getLeftDir (void) const; 00041 DL_vector getLeftHand (void) const; 00042 DL_vector getRightBase (void) const; 00043 DL_vector getRightDir (void) const; 00044 DL_vector getRightHand (void) const; 00045 DL_Scalar getMinRot (void) const; 00046 DL_Scalar getMaxRot (void) const; 00047 DL_Scalar getIniRot (void) const; 00048 DL_Scalar getMinTrans (void) const; 00049 DL_Scalar getMaxTrans (void) const; 00050 DL_Scalar getIniTrans (void) const; 00051 00052 virtual void transformPoints (SIG_Link *side, 00053 DL_vector mov, DL_matrix rot); 00054 virtual void getGeomRelation 00055 (DL_vector &t, DL_matrix &o, SIG_Link *origin); 00056 virtual void writeToFileTransfer (QTextStream & tx); 00057 }; 00058 } 00059 00060 #endif // SIGEL_ROBOT_SIG_CYLINDRICALJOINT_H