00001 // This is oxl/mvl/PairMatchSet2D3D.h 00002 #ifndef PairMatchSet2D3D_h_ 00003 #define PairMatchSet2D3D_h_ 00004 #ifdef VCL_NEEDS_PRAGMA_INTERFACE 00005 #pragma interface 00006 #endif 00007 //: 00008 // \file 00009 // \author 00010 // Andrew W. Fitzgibbon, Oxford RRG, 19 Sep 96 00011 //----------------------------------------------------------------------------- 00012 00013 #include <mvl/PairMatchSet.h> 00014 #include <mvl/HomgPoint2D.h> 00015 00016 class HomgInterestPointSet; 00017 class HomgMetric; 00018 class HomgPoint2D; 00019 class HomgPoint3D; 00020 class PairMatchSetCorner; 00021 00022 class PairMatchSet2D3D : public PairMatchSet 00023 { 00024 public: 00025 // Constructors/Destructors-------------------------------------------------- 00026 00027 PairMatchSet2D3D(); 00028 PairMatchSet2D3D(const HomgInterestPointSet* corners, vcl_vector<HomgPoint3D>* structure); 00029 PairMatchSet2D3D(const PairMatchSet2D3D& that); 00030 PairMatchSet2D3D& operator=(const PairMatchSet2D3D&); 00031 ~PairMatchSet2D3D(); 00032 00033 // Computations-------------------------------------------------------------- 00034 00035 // Data Access--------------------------------------------------------------- 00036 00037 // Data Control-------------------------------------------------------------- 00038 bool is_set() const { return (corners_ != 0) && (structure_ != 0); } 00039 void set(const HomgInterestPointSet* corners, vcl_vector<HomgPoint3D>* structure); 00040 void set(int corners_size, vcl_vector<HomgPoint3D>* structure); 00041 00042 void set_from(const PairMatchSet2D3D& otherframe_to_3d, const PairMatchSetCorner& otherframe_to_this); 00043 00044 const HomgPoint2D& get_point_2d(int i1) const; 00045 const HomgPoint3D& get_point_3d(int i2) const; 00046 00047 //: Return the set of corners within which the i1 indices point 00048 const HomgInterestPointSet* get_corners() const; 00049 00050 //: Return the conditioner for the corners. 00051 HomgMetric get_conditioner() const; 00052 00053 //: Return the projective structure within which the i2 indices point 00054 vcl_vector<HomgPoint3D>* get_structure() const { return structure_; } 00055 00056 private: 00057 const HomgInterestPointSet* corners_; 00058 vcl_vector<HomgPoint3D>* structure_; 00059 }; 00060 00061 #endif // PairMatchSet2D3D_h_