00001
00040 #ifndef __RIESZ__
00041 #define __RIESZ__
00042
00043 #include "base_2D.h"
00044
00045 namespace Function_2D{
00046
00048 class Riesz_1:public Filter_interface_2D{
00049
00050 public:
00051 inline Riesz_1(const real_type center_x = 0,
00052 const real_type center_y = 0,
00053 const real_type sigma_x = 1,
00054 const real_type sigma_y = 1,
00055 const real_type orientation_angle = 0);
00056
00057 virtual inline real_type base_value_proxy(const real_type x,
00058 const real_type y) const;
00059
00060 };
00061
00063 class Riesz_2:public Filter_interface_2D{
00064
00065 public:
00066 inline Riesz_2(const real_type center_x = 0,
00067 const real_type center_y = 0,
00068 const real_type sigma_x = 1,
00069 const real_type sigma_y = 1,
00070 const real_type orientation_angle = 0);
00071
00072 virtual inline real_type base_value_proxy(const real_type x,
00073 const real_type y) const;
00074
00075 };
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090 Riesz_1::Riesz_1(const real_type center_x,
00091 const real_type center_y,
00092 const real_type sigma_x,
00093 const real_type sigma_y,
00094 const real_type orientation_angle):
00095 Filter_interface_2D(center_x,center_y,
00096 sigma_x,sigma_y,
00097 1,1,
00098 orientation_angle,
00099 1){}
00100
00101 Riesz_1::real_type Riesz_1::base_value_proxy(const real_type x,
00102 const real_type y) const{
00103
00104 const real_type r = x*x+y*y;
00105
00106 return (r>0) ? x/pow(r,1.5) : 0;
00107 }
00108
00109
00110 Riesz_2::Riesz_2(const real_type center_x,
00111 const real_type center_y,
00112 const real_type sigma_x,
00113 const real_type sigma_y,
00114 const real_type orientation_angle):
00115 Filter_interface_2D(center_x,center_y,
00116 sigma_x,sigma_y,
00117 1,1,
00118 orientation_angle,
00119 1){}
00120
00121 Riesz_2::real_type Riesz_2::base_value_proxy(const real_type x,
00122 const real_type y) const{
00123
00124 const real_type r = x*x+y*y;
00125
00126 return (r>0) ? y/pow(r,1.5) : 0;
00127 }
00128 }
00129
00130 #endif