00001 //----------------------------------------------------------------------------- 00002 // Author: Jim Holmström 00003 // Date: 2002-02-13 00004 //----------------------------------------------------------------------------- 00005 00006 #ifndef __INPUTGENERATORDEFAULT_H 00007 #define __INPUTGENERATORDEFAULT_H 00008 00009 #include <Random.hpp> 00010 #include "IInputGenerator.hpp" 00011 #include <GNGRepresentation/IGLInputRepresentation.hpp> 00012 00013 #include <cstdlib> 00014 #include <GL/glut.h> 00015 00019 class InputGeneratorDefault : public IInputGenerator 00020 { 00021 public: 00025 InputGeneratorDefault(unsigned int dimension) 00026 { 00027 m_dimension = dimension; 00028 m_min = -1.0; 00029 m_max = 1.0; 00030 00031 for(unsigned int i=0; i< dimension; i++) 00032 m_vector.push_back(0.0); 00033 00034 m_output.push_back(1.0); // only one class. 00035 } 00036 00040 virtual Vector GetInput() 00041 { 00042 for(unsigned int i=0; i<m_dimension; i++) 00043 m_vector[i] = Random::Randomize(); 00044 00045 return m_vector; 00046 } 00047 00051 virtual Vector const & GetLastInput() const { return m_vector; } 00052 00056 virtual unsigned int GetDimension() const { return m_dimension; } 00057 00061 virtual GeneratorType GetGeneratorType() const { return ClassesGenerator; } 00062 00063 protected: 00064 unsigned int m_dimension; 00065 double m_min; 00066 double m_max; 00067 Vector m_vector; 00068 }; 00069 00070 00074 class InputRepresentationDefault : public IGLInputRepresentation 00075 { 00076 public: 00077 InputRepresentationDefault(InputGeneratorDefault * i) : m_inputGenerator(*i) {} 00078 virtual ~InputRepresentationDefault() {} 00079 00080 virtual void GLOutputDistribution() const 00081 { 00082 glRectd(1.0,1.0,-1.0,-1.0); 00083 } 00084 00085 virtual void GLOutputSignal() const 00086 { 00087 Vector const & v = m_inputGenerator.GetLastInput(); 00088 glBegin(GL_POINTS); 00089 { 00090 glVertex2d(v[0], v[1]); 00091 } 00092 glEnd(); 00093 00094 } 00095 00096 private: 00097 InputGeneratorDefault & m_inputGenerator; 00098 }; 00099 00100 #endif 00101