Go to the documentation of this file.00001 
00002 #ifndef FManifoldProject_h_
00003 #define FManifoldProject_h_
00004 #ifdef VCL_NEEDS_PRAGMA_INTERFACE
00005 #pragma interface
00006 #endif
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 #include <vnl/vnl_double_3x3.h>
00033 #include <vnl/vnl_double_4x4.h>
00034 #include <vnl/vnl_double_4.h>
00035 #include <vgl/vgl_fwd.h>
00036 
00037 class FMatrix;
00038 class HomgPoint2D;
00039 
00040 class FManifoldProject
00041 {
00042   vnl_double_3x3 F_;
00043 
00044   
00045   vnl_double_4x4 A_;
00046   vnl_double_4 t_;
00047   vnl_double_4x4 V_;
00048   vnl_double_4 d_;
00049 
00050   bool affine_F_;
00051 
00052  public:
00053   FManifoldProject();
00054   FManifoldProject(const FMatrix& F);
00055 
00056   void set_F(const FMatrix& F);
00057   double correct(vgl_homg_point_2d<double> const& point1,
00058                  vgl_homg_point_2d<double> const& point2,
00059                  vgl_homg_point_2d<double>& out1,
00060                  vgl_homg_point_2d<double>& out2) const;
00061   double correct(const HomgPoint2D& point1, const HomgPoint2D& point2, HomgPoint2D *, HomgPoint2D *) const;
00062   double correct(double   x1, double   y1, double   x2, double   y2,
00063                  double *ox1, double *oy1, double *ox2, double *oy2) const;
00064 
00065   vnl_double_3x3 const& get_F() const { return F_; }
00066 };
00067 
00068 #endif // FManifoldProject_h_