00001
00002
00003
00004
00006 #ifndef _TRIANGULARFUNCTION_H_
00007 #define _TRIANGULARFUNCTION_H_
00008
00009 #include "FuzzyFunction.h"
00010 #include <string>
00011
00012 namespace FD {
00013
00014 class TriangularFunction : public FuzzyFunction {
00015
00016 public:
00017
00018 virtual std::string get_type() {return std::string("Triangular");}
00019
00020
00021 TriangularFunction(const std::string &name, float a, float b, float c);
00022
00023 TriangularFunction(std::string nodeName, ParameterSet params);
00024
00025 TriangularFunction(std::istream &in) {readFrom(in);}
00026
00027 TriangularFunction() {}
00028
00029
00030 virtual ~TriangularFunction();
00031
00032
00033 virtual float evaluate(float index);
00034
00035
00036 virtual float get_area();
00037
00038
00039 virtual float get_center_of_gravity();
00040
00041
00042 virtual float get_upper_bound() {return m_c;}
00043
00044
00045 virtual float get_lower_bound() {return m_a;}
00046
00047
00048 virtual Vector<float> get_bounds();
00049
00050
00051 virtual ObjectRef clone();
00052
00053 virtual void printOn(std::ostream &out=std::cout) const;
00054
00055 virtual void readFrom(std::istream &in=std::cin);
00056
00057 private:
00058
00059
00060 float m_a;
00061 float m_b;
00062 float m_c;
00063
00064 };
00065
00066
00067 }
00068 #endif