00001 /* 00002 * PotentialFunction.hpp 00003 * 00004 * Created on: Sep 8, 2012 00005 * Author: mriedel 00006 */ 00007 00008 #ifndef POTENTIALFUNCTION_HPP_ 00009 #define POTENTIALFUNCTION_HPP_ 00010 00011 #include <telekyb_defines/telekyb_defines.hpp> 00012 #include <telekyb_calculus/Potentials/PotentialFunctionOptions.hpp> 00013 00014 00015 namespace TELEKYB_NAMESPACE { 00016 00017 class PotentialFunction : OptionListener<double> { 00018 private: 00019 void registerOptionListeners(); 00020 00021 protected: 00022 PotentialFunctionOptions options; 00023 //_PotentialImpl potentialImpl; 00024 PotentialFunctionType type; 00025 00026 void updateBoundsValues(); 00027 00028 public: 00029 PotentialFunction(const std::string& potentialFunctionName_, PotentialFunctionType type_); 00030 PotentialFunction(const std::string& potentialFunctionName_, PotentialFunctionType type_, 00031 double tPotFuncZeroD_, double tPotFuncInfD_, double tPotFuncSatValue_, double tPotFuncGain_); 00032 virtual ~PotentialFunction(); 00033 00034 00035 // get Type 00036 PotentialFunctionType getType() const; 00037 PotentialFunctionOptions& getOptions(); 00038 00039 virtual void optionDidChange(const Option<double>* option_); 00040 00041 double getPotential(double d) const; 00042 // Pure virtual, overwrite 00043 virtual double getPotentialImpl(double d) const = 0; 00044 }; 00045 00046 } /* namespace telekyb */ 00047 #endif /* POTENTIALFUNCTION_HPP_ */