123 static double J1(
double x)
135 0.581199354001606143928050809e+21,
136 -0.6672106568924916298020941484e+20,
137 0.2316433580634002297931815435e+19,
138 -0.3588817569910106050743641413e+17,
139 0.2908795263834775409737601689e+15,
140 -0.1322983480332126453125473247e+13,
141 0.3413234182301700539091292655e+10,
142 -0.4695753530642995859767162166e+7,
143 0.270112271089232341485679099e+4
147 0.11623987080032122878585294e+22,
148 0.1185770712190320999837113348e+20,
149 0.6092061398917521746105196863e+17,
150 0.2081661221307607351240184229e+15,
151 0.5243710262167649715406728642e+12,
152 0.1013863514358673989967045588e+10,
153 0.1501793594998585505921097578e+7,
154 0.1606931573481487801970916749e+4,
160 for (i=7; i >= 0; i--)
168 static double P1(
double x)
180 0.352246649133679798341724373e+5,
181 0.62758845247161281269005675e+5,
182 0.313539631109159574238669888e+5,
183 0.49854832060594338434500455e+4,
184 0.2111529182853962382105718e+3,
185 0.12571716929145341558495e+1
189 0.352246649133679798068390431e+5,
190 0.626943469593560511888833731e+5,
191 0.312404063819041039923015703e+5,
192 0.4930396490181088979386097e+4,
193 0.2030775189134759322293574e+3,
199 for (i=4; i >= 0; i--)
201 p=p*(8.0/
x)*(8.0/
x)+Pone[i];
202 q=q*(8.0/
x)*(8.0/
x)+Qone[i];
207 static double Q1(
double x)
215 0.3511751914303552822533318e+3,
216 0.7210391804904475039280863e+3,
217 0.4259873011654442389886993e+3,
218 0.831898957673850827325226e+2,
219 0.45681716295512267064405e+1,
220 0.3532840052740123642735e-1
224 0.74917374171809127714519505e+4,
225 0.154141773392650970499848051e+5,
226 0.91522317015169922705904727e+4,
227 0.18111867005523513506724158e+4,
228 0.1038187585462133728776636e+3,
234 for (i=4; i >= 0; i--)
236 p=p*(8.0/
x)*(8.0/
x)+Pone[i];
237 q=q*(8.0/
x)*(8.0/
x)+Qone[i];
255 q=sqrt(2.0/(
M_PI*
x))*(P1(
x)*(1.0/sqrt(2.0)*(sin(
x)-cos(
x)))-8.0/
x*Q1(
x)*
256 (-1.0/sqrt(2.0)*(sin(
x)+cos(
x))));
268 NEWMAT::ColumnVector colVec(width);
269 NEWMAT::RowVector rowVec(width);
282 for(
long index = 0; index < width; index++)
284 t = (double)index/(
double)(width-1);
285 t = middle + (t - .5)*scale;
302 NEWMAT::Matrix *result =
new NEWMAT::Matrix(width, width);
316 NEWMAT::RowVector *result =
new NEWMAT::RowVector(width);
321 for(
long index = 0; index < width; index++)
323 t = (double)index/(
double)(width-1);
324 t = middle + (t- .5)*scale;
326 (*result)[index] = val;
RTTI_DEF(ossimFilter, "ossimFilter")
virtual double filter(double value, double) const
virtual void createMatrix(NEWMAT::Matrix &m, long width=3, double middle=0.0, double scale=0.0) const
virtual double getSupport() const =0
virtual NEWMAT::RowVector * newVector(long width, double middle=0.0, double scale=1.0) const
virtual NEWMAT::Matrix * newMatrix(long width=3, double middle=0.0, double scale=0.0) const
RTTI_DEF1(ossimBoxFilter, "ossimBoxFilter", ossimFilter)
virtual double filter(double x, double support) const =0