00001 //----------------------------------------------------------------------------- 00002 //: 00003 // \file 00004 // \brief interface for the bcal_euclidean_transformation class. 00005 // 00006 // \verbatim 00007 // Modifications: 00008 // Sancar Adali April 1, 2004 Added get_trans_matrix(i) for acccessing ith 00009 // transformation matrix 00010 // \endverbatim 00011 //----------------------------------------------------------------------------- 00012 00013 00014 #ifndef AFX_EUCLIDEAN_TRANSFORMATION_H__F0345CDE_C4EB_47BA_9A60_25A77056C5EB__INCLUDED_ 00015 #define AFX_EUCLIDEAN_TRANSFORMATION_H__F0345CDE_C4EB_47BA_9A60_25A77056C5EB__INCLUDED_ 00016 00017 #if defined(_MSC_VER) && ( _MSC_VER > 1000 ) 00018 #pragma once 00019 #endif // _MSC_VER > 1000 00020 00021 #include <vcl_vector.h> 00022 #include <vcl_iosfwd.h> 00023 #include <vcsl/vcsl_spatial_transformation.h> 00024 #include <vgl/algo/vgl_h_matrix_3d.h> 00025 00026 class bcal_euclidean_transformation : public vcsl_spatial_transformation 00027 { 00028 private: 00029 vcl_vector<vgl_h_matrix_3d<double> > trans_; 00030 00031 public: // constructor and deconstructor 00032 bcal_euclidean_transformation() {} 00033 virtual ~bcal_euclidean_transformation() {} 00034 00035 public: // operators 00036 void set_transformations(vcl_vector<vgl_h_matrix_3d<double> > &t) {trans_=t;} 00037 00038 vnl_vector<double> inverse(const vnl_vector<double> &v, double time) const; 00039 virtual vnl_vector<double> execute(const vnl_vector<double> &v, double tims) const; 00040 virtual bool is_invertible(double time) const; // for abstract interface 00041 virtual void set_beat(vcl_vector<double> const& new_beat); 00042 vnl_double_4x4 get_trans_matrix(int i); 00043 virtual bool is_valid() const; 00044 00045 // for debugging 00046 // print information 00047 void print(vcl_ostream& os = vcl_cerr); 00048 00049 protected: 00050 // clear trans_ 00051 int remove(); 00052 }; 00053 00054 #endif // AFX_EUCLIDEAN_TRANSFORMATION_H__F0345CDE_C4EB_47BA_9A60_25A77056C5EB__INCLUDED_
1.4.4