00001 // This is gel/pop/pop_homography_2d.h 00002 #ifndef pop_homography_2d_h_ 00003 #define pop_homography_2d_h_ 00004 #ifdef VCL_NEEDS_PRAGMA_INTERFACE 00005 #pragma interface 00006 #endif 00007 //: 00008 // \file 00009 // \brief this is a vertex/coordinate system in a coordinate system graph 00010 // 00011 // \author 00012 // Peter Tu April 2003 00013 // General Electric 00014 // 00015 //------------------------------------------------------------------------------- 00016 00017 #include<pop/pop_object.h> 00018 #include<vgl/algo/vgl_h_matrix_2d.h> 00019 #include<pop/pop_transform.h> 00020 #include<pop/pop_vertex.h> 00021 #include<vcl_vector.h> 00022 #include<pop/pop_parameter.h> 00023 #include<pop/pop_geometric_object.h> 00024 00025 //: A parameter that can be optimized 00026 class pop_homography_2d : public pop_transform 00027 { 00028 public: 00029 //: constructor 00030 // We have an arbitrary 3 by 3 matrix 00031 // |p1 p2 p3| 00032 // |p3 p4 p5| 00033 // |p6 p7 p8| 00034 // 00035 pop_homography_2d(vcl_vector<pop_parameter*> params, 00036 pop_vertex *cs1, pop_vertex *cs2); 00037 00038 //: destructor 00039 ~pop_homography_2d(); 00040 00041 //: transform a geometric object 00042 virtual pop_geometric_object* transform(pop_geometric_object *obj); 00043 00044 //: update the transform based on the parameters 00045 virtual void update(); 00046 00047 private: 00048 vgl_h_matrix_2d<double> trans_; 00049 }; 00050 00051 #endif // pop_homography_2d_h_
1.5.1