+ static double sinc (double x)
+ { return (fabs(x) > F_EPSILON ? (sin (x) / x) : 1.0); }
+
+ static double sinc (double x, double mult)
+ { return (fabs(x) > F_EPSILON ? (sin (x * mult) / x) : 1.0); }
+
+ private:
+ int m_nFilterPoints;
+ double m_dBandwidth;
+ double m_dFilterParam;
+ double m_dFilterInc;
+ double m_dFilterMin;
+ double m_dFilterMax;
+ double* m_adFilter;
+
+ std::string m_nameFilter;
+ std::string m_nameDomain;
+ int m_idFilter;
+ int m_idDomain;
+
+ bool m_fail;
+ std::string m_failMessage;
+
+ static const char* s_aszFilterName[];
+ static const char* s_aszFilterTitle[];
+ static const int s_iFilterCount;
+ static const char* s_aszDomainName[];
+ static const char* s_aszDomainTitle[];
+ static const int s_iDomainCount;
+ static int N_INTEGRAL;
+
+ static const bool haveAnalyticSpatial (const int filterID);
+
+ void init (const int idFilter, double dFilterMin, double dFilterMax, int nFilterPoints, double dBandwidth, double dFilterParam, const int idDomain);
+
+ void createFrequencyFilter (double* x) const;
+ void createSpatialFilter (double* x) const;
+
+ double spatialResponseCalc (double x) const;
+ double spatialResponseAnalytic (double x) const;
+ double frequencyResponse (double u) const;
+
+ static double integral_abscos (double u, double w)
+ { return (fabs (u) > F_EPSILON ? (cos (u * w) - 1) / (u * u) + w / u * sin (u * w) : (w * w / 2)); }