eLynx SDK
v3.3.0 C++ image processing API reference |
00001 //============================================================================ 00002 // BellCurve.h Math.Component package 00003 //============================================================================ 00004 // Usage : 2D gaussian curve (implementing IFunctionNL interface) 00005 //---------------------------------------------------------------------------- 00006 // Copyright (C) 2006 by eLynx project 00007 // 00008 // This library is free software; you can redistribute it and/or 00009 // modify it under the terms of the GNU Library General Public 00010 // License as published by the Free Software Foundation; either 00011 // version 2 of the License, or (at your option) any later version. 00012 // 00013 // This library is distributed in the hope that it will be useful, 00014 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00016 // See the GNU Library General Public License for more details. 00017 //---------------------------------------------------------------------------- 00018 #ifndef __BellCurve_h__ 00019 #define __BellCurve_h__ 00020 00021 #include <elx/math/IFunctionNL.h> 00022 00023 namespace eLynx { 00024 namespace Math { 00025 00033 class ExportedByMath BellCurve : public IFunctionNL { 00034 00035 public: 00036 00038 BellCurve() {} 00039 00043 virtual uint32 GetVariablesCount() const { return 1; } 00044 00048 virtual uint32 GetParametersCount() const { return 3; }; 00049 00054 virtual double Evaluate(const IVector &iVars, 00055 const IVector &iParams) const; 00056 00062 virtual double EvalDerivativeByParam(const IVector &iVars, 00063 const IVector &iParams, uint32 iByParam) const; 00064 00065 private: 00066 00068 void CheckInputs(const IVector &iVars, const IVector &iParams) const; 00069 }; 00070 00071 } // namespace Math 00072 } // namespace eLynx 00073 00074 #endif //__BellCurve_h__ 00075