contrib/oxl/mvl/PairMatchSet2D3D.h
Go to the documentation of this file.
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_