R2Arma.h

Go to the documentation of this file.
00001 // ----------------------------------------------------------------------------
00002 //
00003 // $Id$
00004 //
00005 // Copyright 2008, 2009, 2010, 2011, 2012  Antonio Franchi and Paolo Stegagno    
00006 //
00007 // This file is part of MIP. 
00008 //
00009 // MIP is free software: you can redistribute it and/or modify
00010 // it under the terms of the GNU General Public License as published by
00011 // the Free Software Foundation, either version 3 of the License, or
00012 // (at your option) any later version.
00013 //
00014 // MIP is distributed in the hope that it will be useful,
00015 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00017 // GNU General Public License for more details.
00018 //
00019 // You should have received a copy of the GNU General Public License
00020 // along with MIP. If not, see <http://www.gnu.org/licenses/>.
00021 //
00022 // Contact info: antonio.franchi@tuebingen.mpg.de stegagno@diag.uniroma1.it
00023 //
00024 // ----------------------------------------------------------------------------
00025 
00028 
00029 #ifndef __R2_ARMA_H_
00030 #define __R2_ARMA_H_
00031 
00032 //BOOST SERIALIZATION
00033 #ifdef FOUND_BOOST_SER
00034  #include <boost/serialization/vector.hpp>
00035  #include <boost/archive/text_iarchive.hpp>
00036  #include <boost/archive/text_oarchive.hpp>
00037 #endif
00038 
00039   
00041 #include <armadillo>
00042 #include <S1.h>
00043 #include <SE2.h>
00044 #include <Time.h>
00045 // using namespace arma;
00046 using namespace std;
00047 namespace MipBaselib{  
00048 typedef enum {
00049  IDENTITY_ARMA_MATRIX,
00050  ZERO_ARMA_MATRIX,
00051  NUM_CANONICAL_ARMA_MATRIX
00052 } CanonicalArmaMatrix;
00053 
00054 static const char* CanonicalArmaMatrixName[NUM_CANONICAL_ARMA_MATRIX] ={
00055  "IDENTITY_ARMA_MATRIX",
00056  "ZERO_ARMA_MATRIX"
00057 };
00058 
00061 class Roto2DArma : public arma::Mat<Decimal>::fixed<2,2>{
00062  public:
00064   Roto2DArma(CanonicalArmaMatrix init=ZERO_ARMA_MATRIX);
00065   
00067   Roto2DArma(const Decimal &a11,const Decimal &a12,const Decimal &a21, const Decimal &a22);
00068   
00070   Roto2DArma(const Decimal &yaw);
00071   
00073   Roto2DArma(const Roto2DArma &A);
00074   
00076   Roto2DArma(const arma::Mat<Decimal>::fixed<2,2>& rhs);
00077   
00080   Roto2DArma(const vector<Decimal> &vec);
00081   
00083   Roto2DArma& operator=(const Roto2DArma& rhs);
00084   
00086   Roto2DArma& operator=(const arma::Mat<Decimal>::fixed<2,2>& rhs);
00087   
00089   Roto2DArma& operator+=(const Roto2DArma &pos);
00090   
00092   /*const */Roto2DArma operator+(Roto2DArma &other) const;
00093   
00095   /*const */Roto2DArma operator-(Roto2DArma &other) const;
00096   
00098   Roto2DArma& operator-=(const Roto2DArma &pos); 
00099   
00101   Roto2DArma& operator*=(const Roto2DArma &pos); 
00102   
00104   Roto2DArma& operator*=(const Decimal& scalar);
00105   
00107   /*const */Roto2DArma operator*(Roto2DArma &other) const;
00108   
00110   Roto2DArma& operator/=(const Roto2DArma &pos); 
00111   
00113   Roto2DArma& operator/=(const Decimal& scalar);
00114     
00116   /*const */Roto2DArma operator/(Roto2DArma &other) const;
00117   
00119   string print();
00120   
00123   Roto2DArma invMatrix();
00124   
00131   arma::Mat<Decimal> subMat(int r, int c, int R, int C);
00132   
00135   arma::Row<Decimal>::fixed<2> getFirstRow() const;
00136   
00139   arma::Row<Decimal>::fixed<2> getSecondRow() const;
00140   
00143   arma::Col<Decimal>::fixed<2> getFirstCol() const;
00144   
00147   arma::Col<Decimal>::fixed<2> getSecondCol() const;
00148   
00153   Decimal getElem(int r,int c) const;
00154   
00159   void setElem(int r,int c,const Decimal &item);
00160   
00163   Decimal getYaw() const;
00164   
00167   Angle getYawAngle() const;
00168   
00170   arma::Mat<Decimal>::fixed<2,2>* getMat();
00171 };
00172 
00173 class Position2DArma: public arma::Col<Decimal>::fixed<2>{
00174  
00175   private:
00176 #ifdef FOUND_BOOST_SER
00177   friend class boost::serialization::access;
00178   template<class Archive>
00179     void serialize(Archive & ar, const unsigned int version){
00180    ar & (*this)(0);
00181    ar & (*this)(1);
00182     }
00183 #endif
00184  
00185  public:
00188   Position2DArma();
00189   
00194   Position2DArma(const Decimal &x,const Decimal &y);
00195   
00199   Position2DArma(const Angle& theta);
00200   
00205   Position2DArma(const Decimal &d,const Angle& theta);
00206   
00209   Position2DArma(const Position2DArma& A);
00210   
00213   Position2DArma(const Position &pos);
00214   
00220   Position2DArma(const arma::Mat<Decimal>& A);
00221   
00225   Position2DArma(stringstream& ss);
00226   
00228   Position2DArma& operator=(const Position& pos);
00229   
00231   Position2DArma& operator=(const Position2DArma& rhs);
00232   
00236   Position2DArma& operator=(const arma::Mat<Decimal>& rhs);
00237   
00239   bool operator==(const Position2DArma &other) const;
00240   
00242   Position2DArma& operator+=(const Position2DArma &pos);
00243   
00245   Position2DArma& operator+=(const Position &pos);
00246   
00250   Position2DArma& operator+=(const arma::Col<Decimal>::fixed<2> &pos); 
00251   
00255   Position2DArma& operator+=(const Decimal& scalar);
00256     
00258   /*const */Position2DArma operator-(Position2DArma &other) const;
00259   
00261   Position2DArma& operator-=(const Position2DArma &pos); 
00262   
00266   Position2DArma& operator-=(const Decimal& scalar);
00267   
00271   Position2DArma& operator-=(const arma::Col<Decimal>::fixed<2> &pos); 
00272   
00274   /*const */Position2DArma operator+(Position2DArma &other) const;
00275   
00277   Position2DArma& operator*=(const Position2DArma &pos); 
00278   
00280   Position2DArma& operator*=(const Decimal& scalar);
00281   
00283   Position2DArma& operator*=(const arma::Mat<Decimal>::fixed<2,2> &mat);
00284   
00286   Position2DArma& operator*=(const arma::Col<Decimal>::fixed<2> &pos); 
00287   
00289   Position2DArma& operator*=(const Roto2DArma &mat);
00290   
00292   Position2DArma& operator*=(const arma::Mat<Decimal>::fixed<3,3> &mat);
00293   
00295   Position2DArma operator*(const arma::Col<Decimal>::fixed<2> &pos) const;
00296   
00298   /*const */Position2DArma operator*(Position2DArma &other) const;
00299   
00301   Position2DArma& operator/=(const Position2DArma &pos); 
00302   
00304   Position2DArma& operator/=(const Decimal& scalar);
00305   
00307   Position2DArma& operator/=(const arma::Col<Decimal>::fixed<2> &pos);
00308     
00310   /*const */Position2DArma operator/(Position2DArma &other) const;
00311   
00313   /*const */Position2DArma operator/(const arma::Col<Decimal>::fixed<2> &pos) const;
00314   
00318   Position2DArma matrixProd(const arma::Mat<Decimal>::fixed<2,2> &mat);
00319   
00323   Position2DArma matrixHomoProd(const arma::Mat<Decimal>::fixed<3,3> &mat);
00324   
00328   Position2DArma matrixProd(Roto2DArma &mat);
00329   
00334   Position2DArma minimum(const Position2DArma& p) const;
00335   
00340   Position2DArma maximum(const Position2DArma& p) const;
00341   
00343   Decimal x() const;
00344   
00346   Decimal y() const;
00347   
00350   void setX(const Decimal &p);
00351   
00354   void setY(const Decimal &p);
00355   
00357   Angle azimuthAngle() const;
00358   
00360   Decimal azimuth() const;
00361   
00364   Angle bearing() const;
00365   
00368   Decimal bearingInv() const;
00369   
00373   Decimal scalar(const Position2DArma& p) const;
00374   
00377   vector<Decimal> vectorize() const;
00378   
00380   string print(int precision=4) const;
00381   
00385   Decimal norm(int p=2) const;
00386   
00390   Decimal squareNorm(int p=2) const;
00391   
00395   Decimal dist( Position2DArma& other, int p=2) const;
00396   
00398   string exportAsString() const;
00399   
00400     // String getter & setter (Syntax "x,y")
00401   bool fromString(const string& s);
00402   string toString() const;
00403 };
00404 
00408 class Velocity2DArma : public Position2DArma{
00409  public:
00410   
00412   Velocity2DArma() : Position2DArma() {}
00413   
00415   Velocity2DArma(const Decimal &x_in,const Decimal &y_in) : Position2DArma(x_in,y_in) {}
00416   
00418   Velocity2DArma(const Velocity2DArma& p);
00419   
00421   Velocity2DArma(Position2DArma p) : Position2DArma(p) {}
00422   
00424   Velocity2DArma(const Position &pos) : Position2DArma(pos){};
00425   
00427   Velocity2DArma(const arma::Mat<Decimal>& A) : Position2DArma(A){};
00428   
00430     Velocity2DArma& operator=(const Velocity2DArma& rhs);
00431   
00433   bool operator==(const Velocity2DArma &other) const;
00434   
00436   string print(PrintTypes type = PRINT_TYPE_WITH_UNITS) const;
00437 }; 
00438 
00442 class Acceleration2DArma : public Position2DArma{
00443  public:
00444   
00446   Acceleration2DArma() : Position2DArma() {}
00447   
00449   Acceleration2DArma(const Decimal &x_in,const Decimal &y_in) : Position2DArma(x_in,y_in) {}
00450   
00452   Acceleration2DArma(const Acceleration2DArma& p);
00453   
00455   Acceleration2DArma(Position2DArma p) : Position2DArma(p) {}
00456   
00458   Acceleration2DArma(const Position &pos) : Position2DArma(pos){};
00459   
00461   Acceleration2DArma(const arma::Mat<Decimal>& A) : Position2DArma(A){};
00462   
00464     Acceleration2DArma& operator=(const Acceleration2DArma& rhs);
00465   
00467   bool operator==(const Acceleration2DArma &other) const;
00468   
00470   string print(PrintTypes type = PRINT_TYPE_WITH_UNITS) const;
00471 }; 
00472  
00473 class Roto2DHomoArma : public arma::Mat<Decimal>::fixed<3,3>{
00474  public:
00476   Roto2DHomoArma(CanonicalArmaMatrix init=ZERO_ARMA_MATRIX);
00477   
00479   Roto2DHomoArma(const Decimal &a11,const Decimal &a12, const Decimal &a21, const Decimal &a22);
00480   
00482   Roto2DHomoArma(const Decimal &a11,const Decimal &a12, const Decimal &a21, const Decimal &a22,const Decimal &x,const Decimal &y);
00483   
00485   Roto2DHomoArma(const Decimal &a11,const Decimal &a12, const Decimal &a21, const Decimal &a22, const arma::Col<Decimal>::fixed<2> &trasl);
00486   
00488   Roto2DHomoArma(const Decimal &yaw);
00489   
00491   Roto2DHomoArma(const Decimal &yaw, const Decimal &x, const Decimal &y);
00492   
00494   Roto2DHomoArma(const Roto2DHomoArma &A);
00495   
00497   Roto2DHomoArma(const arma::Mat<Decimal>::fixed<3,3>& rhs);
00498   
00500   Roto2DHomoArma(const Roto2DArma& other);
00501   
00503   Roto2DHomoArma(const Roto2DArma& other, const Decimal &x, const Decimal &y);
00504   
00506   Roto2DHomoArma(const Roto2DArma& other, const arma::Col<Decimal>::fixed<2> &trasl);
00507   
00509   Roto2DHomoArma& operator=(const Roto2DHomoArma& rhs);
00510   
00512   Roto2DHomoArma& operator=(const arma::Mat<Decimal>::fixed<3,3>& rhs);
00513   
00515   Roto2DHomoArma& operator+=(const Roto2DHomoArma &pos);
00516   
00518   /*const */Roto2DHomoArma operator+(Roto2DHomoArma &other) const;
00519   
00521   /*const */Roto2DHomoArma operator-(Roto2DHomoArma &other) const;
00522   
00524   Roto2DHomoArma& operator-=(const Roto2DHomoArma &pos); 
00525   
00527   Roto2DHomoArma& operator*=(const Roto2DHomoArma &pos); 
00528   
00530   Roto2DHomoArma& operator*=(const Decimal& scalar);
00531     
00533   /*const */Roto2DHomoArma operator*(Roto2DHomoArma &other) const;
00534   
00536   Roto2DHomoArma& operator/=(const Roto2DHomoArma &pos); 
00537   
00539   Roto2DHomoArma& operator/=(const Decimal& scalar);
00540     
00542   /*const */Roto2DHomoArma operator/(Roto2DHomoArma &other) const;
00543   
00545   string print();
00546   
00549   Roto2DHomoArma invMatrix();
00550   
00555   Decimal getElem(int r,int c) const;
00556   
00561   void setElem(int r,int c,const Decimal &item);
00562   
00564   void setRotation(Roto2DArma &rhs);
00565   
00568   Decimal getYaw() const;
00569   
00572   Angle getYawAngle() const;
00573   
00576   arma::Col<Decimal>::fixed<2> getTraslation();
00577   
00580   arma::Mat<Decimal>::fixed<2,2> getRotation();
00581   
00584   Position2DArma getTraslation2DArma();
00585   
00588   Roto2DArma getRotation2DArma();
00589 };
00590  
00591 class Pose2DArma{
00592  private:
00593   Angle      _yaw;
00594   Position2DArma _pos;
00595  public:
00596   
00598   Pose2DArma();
00599   
00601   Pose2DArma(const Decimal &x, const Decimal &y, const Angle &yaw);
00602   
00604   Pose2DArma(const Decimal& x, const Decimal &y, const Decimal &yaw);
00605   
00607   Pose2DArma(const Position2DArma &pos, const Angle &ori);
00608   
00610   Pose2DArma(const Position2DArma &pos, const Decimal &ori);
00611   
00613   Pose2DArma(const arma::Mat<Decimal>::fixed<2,1> &pos, const Decimal &ori);
00614   
00616   Pose2DArma(const arma::Mat<Decimal>::fixed<2,1> &pos, const Angle &ori);
00617   
00619   Pose2DArma(const Pose &pos);
00620   
00622   Pose2DArma& operator*=(const arma::Mat<Decimal>::fixed<3,3>& rhs);
00623   
00625   /*const*/ Pose2DArma operator*(const arma::Mat<Decimal>::fixed<3,3>& rhs) const;
00626   
00628   Pose2DArma& operator*=(const arma::Mat<Decimal>::fixed<4,4>& rhs);
00629   
00631   /*const*/ Pose2DArma operator*(const arma::Mat<Decimal>::fixed<4,4>& rhs) const;
00632   
00634   Pose2DArma& operator=(const Pose& rhs);
00635   
00637   Pose2DArma& operator=(const Pose2DArma& rhs);
00638   
00640   Pose2DArma& operator+=(const Pose2DArma& a);
00641   
00643   const Pose2DArma operator+(const Pose2DArma &other) const;
00644   
00646   Pose2DArma& operator-=(const Pose2DArma& a);
00647   
00649   const Pose2DArma operator-(const Pose2DArma &other) const;
00650   
00652   bool operator==(const Pose2DArma &other) const;
00653   
00655   bool operator!=(const Pose2DArma &other) const;
00656   
00659   Position2DArma getPos() const;
00660   
00663   Decimal getX() const;
00664   
00667   Decimal getY() const;
00668   
00671   Angle getOriAngle();
00672   
00675   Decimal getOri();
00676   
00679   void setPos(const Position2DArma &pos);
00680   
00683   void setX(const Decimal &x);
00684   
00687   void setY(const Decimal &y);
00688   
00691   void setOri(const Angle& ori);
00692   
00695   void setOri(const Decimal& ori);
00696   
00700   Decimal norm(int p=2) const;
00701   
00704   Decimal azimuth() const;
00705   
00708   Angle azimuthAngle() const;
00709   
00713   Pose2DArma& relativeCoord(const Pose2DArma& other);
00714   
00716   void directComposition(Pose2DArma &t);
00717   
00719   void inverseComposition(Pose2DArma &t);
00720   
00722   string print();
00723 };
00724 
00729 class Odometry2DArma : public arma::Col<Decimal>::fixed<3>{
00730  public:
00731   
00733   Odometry2DArma();
00734   
00736   Odometry2DArma(const Decimal &xVel, const Decimal &yVel, const Decimal &zOmega);
00737   
00739   Odometry2DArma(const Position2DArma &A, const Decimal &zOmega);
00740   
00742   Odometry2DArma(const Odometry2DArma &A);
00743   
00745   Odometry2DArma& operator=(const Odometry2DArma& rhs);
00746   
00748   Odometry2DArma& operator=(const arma::Mat<Decimal>& rhs);
00749   
00751   Odometry2DArma& operator+=(const Odometry2DArma& A);
00752   
00754   Odometry2DArma& operator+=(const Decimal& scalar);
00755   
00757   /*const */Odometry2DArma operator+(Odometry2DArma &other) const;
00758   
00760   Odometry2DArma& operator-=(const Odometry2DArma& A);
00761   
00763   Odometry2DArma& operator-=(const Decimal& scalar);
00764   
00766   /*const */Odometry2DArma operator-(Odometry2DArma &other) const;
00767   
00769   Odometry2DArma& operator*=(const Odometry2DArma& A);
00770   
00772   Odometry2DArma& operator*=(const Decimal& scalar);
00773   
00775   /*const */Odometry2DArma operator*(Odometry2DArma &other) const;
00776   
00778   Odometry2DArma& operator/=(const Odometry2DArma& A);
00779   
00781   Odometry2DArma& operator/=(const Decimal& scalar);
00782   
00784   /*const */Odometry2DArma operator/(Odometry2DArma &other) const;
00785   
00787   bool operator==(const Odometry2DArma &other) const;
00788   
00790   bool operator!= ( const Odometry2DArma& other ) const;
00791   
00794   Decimal getVelX() const;
00795   
00798   Decimal getVelY() const;
00799   
00802   Decimal getOmegaZ() const;
00803   
00806   Velocity2DArma getVelocity() const;
00807   
00810   void setVelX(const Decimal &xVel);
00811   
00814   void setVelY(const Decimal &yVel);
00815   
00818   void setVelocity(const Velocity2DArma &vel);
00819   
00822   void setOmegaZ(const Decimal &zOmega);
00823   
00825   string print();
00826 };
00827 
00828 class Odometry2DTimeArma{
00829  private:
00830   Odometry2DArma _odo;
00831   Time      _time;
00832  public:
00833   
00835   Odometry2DTimeArma();
00836   
00838   Odometry2DTimeArma(const Decimal &xVel, const Decimal &yVel, const Decimal &zOmega, const Time &time);
00839   
00841   Odometry2DTimeArma(const Position2DArma &A, const Decimal &zOmega, const Time &time);
00842   
00844   Odometry2DTimeArma(const Odometry2DArma &A, const Time &time);
00845   
00847   Odometry2DTimeArma(const Decimal &xVel, const Decimal &yVel, const Decimal &zOmega, const long int &sec, const long int &usec);
00848   
00850   Odometry2DTimeArma(const Position2DArma &A, const Decimal &zOmega, const long int &sec, const long int &usec);
00851   
00853   Odometry2DTimeArma(const Odometry2DArma &A, const long int &sec, const long int &usec);
00854   
00856   Odometry2DTimeArma(const Decimal &xVel, const Decimal &yVel, const Decimal &zOmega, const Decimal &time);
00857   
00859   Odometry2DTimeArma(const Position2DArma &A, const Decimal &zOmega, const Decimal &time);
00860   
00862   Odometry2DTimeArma(const Odometry2DArma &A, const Decimal &time);
00863   
00865   Odometry2DTimeArma& operator=(const Odometry2DTimeArma& rhs);
00866   
00869   Odometry2DArma getOdo() const;
00870   
00873   Time getTime() const;
00874   
00877   Decimal getTimeDCast();
00878   
00881   Decimal getOdoVelX() const;
00882   
00885   Decimal getOdoVelY() const;
00886   
00889   Decimal getOdoOmegaZ() const;
00890   
00893   Velocity2DArma getOdoVelocity() const;
00894   
00897   void setOdometry(const Odometry2DArma &odo);
00898   
00901   void setTime(const Time &time);
00902   
00905   void setTime(const Decimal time);
00906   
00909   void setTime(const long int &sec,const long int &usec);
00910   
00913   void setOdoVelX(const Decimal &xVel);
00914   
00917   void setOdoVelY(const Decimal &yVel);
00918   
00921   void setOdoVelocity(const Velocity2DArma &vel);
00922   
00925   void setOdoOmegaZ(const Decimal &zOmega);
00926   
00928   string print();
00929 };
00930 
00931 class Position2DTimeArma{
00932  private:
00933   Position2DArma _pos;
00934   Time      _time;
00935  public:
00936   
00938   Position2DTimeArma();
00939   
00941   Position2DTimeArma(const Position2DArma &odo, const Time &time);
00942   
00944   Position2DTimeArma(const Decimal &x, const Decimal &y, const Time &time);
00945   
00947   Position2DTimeArma(const Decimal &x,const Decimal &y,const long int &sec,const long int &usec);
00948   
00950   Position2DTimeArma(const Decimal &x,const Decimal &y,const Decimal &time);
00951   
00953   Position2DTimeArma(const Position& A, const Time &time);
00954   
00956   Position2DTimeArma(const Position& A, const long int &sec,const long int &usec);
00957   
00959   Position2DTimeArma(const Position& A, const Decimal &time);
00960   
00962   Position2DTimeArma(const arma::Mat<Decimal>& A, const Time &time);
00963   
00965   Position2DTimeArma(const arma::Mat<Decimal>& A, const long int &sec,const long int &usec);
00966   
00968   Position2DTimeArma(const arma::Mat<Decimal>& A, const Decimal &time);
00969   
00971   Position2DTimeArma& operator=(const Position2DTimeArma& rhs);
00972   
00975   Position2DArma getPos() const;
00976   
00979   Time getTime() const;
00980   
00983   Decimal getTimeDCast();
00984   
00987   void setPos(const Position2DArma &pos);
00988   
00991   void setTime(const Time &time);
00992   
00995   void setTime(const Decimal time);
00996   
00999   void setTime(const long int &sec,const long int &usec);
01000   
01002   Decimal posX() const;
01003   
01005   Decimal posY() const;
01006   
01008   void setPosX(const Decimal &p);
01009   
01011   void setPosY(const Decimal &p);
01012   
01013   
01015   string print();
01016 };
01017 
01018 class PosiFeatures2DTimeArma{
01019  private:
01020   Time _time;
01021   vector<Position2DArma> _vecPos;
01022  public:
01023   
01025   PosiFeatures2DTimeArma();
01026   
01028   PosiFeatures2DTimeArma(const Time &time);
01029   
01031   PosiFeatures2DTimeArma(const int &sec, const int &usec);
01032   
01034   PosiFeatures2DTimeArma(const Decimal &time);
01035   
01037   PosiFeatures2DTimeArma(const vector<Position2DArma> &vec, const Time &time);
01038   
01040   PosiFeatures2DTimeArma(const vector<Position2DArma> &vec,const int &sec, const int &usec);
01041   
01043   PosiFeatures2DTimeArma(const vector<Position2DArma> &vec,const Decimal &time);
01044   
01046   PosiFeatures2DTimeArma(const Position2DArma &pos, const Time &time);
01047   
01049   PosiFeatures2DTimeArma(const Position2DArma &pos,const int &sec, const int &usec);
01050   
01052   PosiFeatures2DTimeArma(const Position2DArma &pos,const Decimal &time);
01053   
01055   PosiFeatures2DTimeArma(const PosiFeatures2DTimeArma &pos);
01056   
01058   PosiFeatures2DTimeArma& operator=(const PosiFeatures2DTimeArma& rhs);
01059   
01062   vector<Position2DArma> getPositionVector() const;
01063   
01068   Position2DArma getPositionAt(int index) const;
01069   
01072   Time getTime() const;
01073   
01076   Decimal getTimeDCast();
01077   
01080   void setTime(const Time &time);
01081   
01084   void setTime(const Decimal &time);
01085   
01089   void setTime(const long int &sec, const long int &usec);
01090   
01093   void addPosition(const Position2DArma &pos);
01094   
01096   void popLast();
01097   
01102   void setPosition(Position2DArma &pos,int index);
01103   
01106   Position2DArma getLastPosition();
01107   
01110   int getPositionSize() const;
01111   
01115   void insertPosition(Position2DArma &pos, int index);
01116   
01118   void freeVector();
01119   
01121   string print();
01122 };
01123 
01124 class Observation2DTimeArma{
01125  private:
01126   PosiFeatures2DTimeArma _vecTimePos;
01127   int _id;
01128  public:
01129   
01131   Observation2DTimeArma(int id=-1);
01132   
01134   Observation2DTimeArma(const Time &time,int id);
01135   
01137   Observation2DTimeArma(const int &sec, const int &usec,int id);
01138   
01140   Observation2DTimeArma(const Decimal &time,int id);
01141   
01143   Observation2DTimeArma(const vector<Position2DArma> &vec, const Time &time,int id);
01144   
01146   Observation2DTimeArma(const vector<Position2DArma> &vec,const int &sec, const int &usec,int id);
01147   
01149   Observation2DTimeArma(const vector<Position2DArma> &vec,const Decimal &time,int id);
01150   
01152   Observation2DTimeArma(const Position2DArma &pos, const Time &time,int id);
01153   
01155   Observation2DTimeArma(const Position2DArma &pos,const int &sec, const int &usec,int id);
01156   
01158   Observation2DTimeArma(const Position2DArma &pos,const Decimal &time,int id);
01159   
01161   Observation2DTimeArma(const Observation2DTimeArma &pos);
01162   
01164   Observation2DTimeArma(const PosiFeatures2DTimeArma &pos,int id);
01165   
01167   Observation2DTimeArma& operator=(const Observation2DTimeArma& rhs);
01168   
01171   vector<Position2DArma> getPositionVector() const;
01172   
01177   Position2DArma getPositionAt(int index) const;
01178   
01181   Time getTime() const;
01182   
01185   Decimal getTimeDCast();
01186   
01189   void setTime(const Time &time);
01190   
01193   void setTime(const Decimal &time);
01194   
01198   void setTime(const long int &sec, const long int &usec);
01199   
01202   void addPosition(const Position2DArma &pos);
01203   
01205   void popLast();
01206   
01211   void setPosition(Position2DArma &pos,int index);
01212   
01215   Position2DArma getLastPosition();
01216   
01219   int getPositionSize() const;
01220   
01224   void insertPosition(Position2DArma &pos, int index);
01225   
01227   void freeVector();
01228   
01231   int getId() const;
01232   
01235   void setId(int id);
01236   
01238   string print();
01239 };
01240 } // End of namespace
01241 #endif

Generated on Mon Feb 20 07:01:07 2017 for MIP by  doxygen 1.5.6