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_