00001
00002 #ifndef Mapping_2d_2d_h_
00003 #define Mapping_2d_2d_h_
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <vnl/vnl_double_2.h>
00025 class Mapping_2d_2d
00026 {
00027 public:
00028 virtual ~Mapping_2d_2d() {}
00029
00030
00031 void map(double x1, double y1, double* x2, double* y2) {
00032 implement_map(x1, y1, x2, y2);
00033 }
00034
00035
00036 vnl_double_2 map(const vnl_vector<double>& in) {
00037 vnl_double_2 ret;
00038 implement_map(in[0], in[1], &ret[0], &ret[1]);
00039 return ret;
00040 }
00041
00042
00043 void inverse_map(double x1, double y1, double* x2, double* y2) {
00044 implement_inverse_map(x1, y1, x2, y2);
00045 }
00046
00047
00048 vnl_double_2 inverse_map(const vnl_vector<double>& in) {
00049 vnl_double_2 ret;
00050 implement_inverse_map(in[0], in[1], &ret[0], &ret[1]);
00051 return ret;
00052 }
00053
00054 virtual void implement_map(double x1, double y1, double* x2, double* y2) = 0;
00055 virtual void implement_inverse_map(double x2, double y2, double* x1, double* y1) = 0;
00056 };
00057
00058 #endif // Mapping_2d_2d_h_