00001 #ifndef FSRMOVEMENT_H 00002 #define FSRMOVEMENT_H 00003 00004 #include "point.h" 00005 00006 namespace GMapping { 00007 00009 class FSRMovement { 00010 public: 00011 FSRMovement(double f=0.0, double s=0.0, double r=0.0); 00012 FSRMovement(const FSRMovement& src); 00013 FSRMovement(const OrientedPoint& pt1, const OrientedPoint& pt2); 00014 FSRMovement(const FSRMovement& move1, const FSRMovement& move2); 00015 00016 00017 void normalize(); 00018 void invert(); 00019 void compose(const FSRMovement& move2); 00020 OrientedPoint move(const OrientedPoint& pt) const; 00021 00022 00023 /* static members */ 00024 00025 static OrientedPoint movePoint(const OrientedPoint& pt, const FSRMovement& move1); 00026 00027 static FSRMovement composeMoves(const FSRMovement& move1, 00028 const FSRMovement& move2); 00029 00030 static FSRMovement moveBetweenPoints(const OrientedPoint& pt1, 00031 const OrientedPoint& pt2); 00032 00033 static FSRMovement invertMove(const FSRMovement& move1); 00034 00035 static OrientedPoint frameTransformation(const OrientedPoint& reference_pt_frame1, 00036 const OrientedPoint& reference_pt_frame2, 00037 const OrientedPoint& pt_frame1); 00038 00039 public: 00040 double f; 00041 double s; 00042 double r; 00043 }; 00044 } 00045 #endif