//////////////////////////////////////////////////////////////////////////////// /*! @file ArrayDataFunction.h Function given by an array of ordinates. - Part of RANet - Research Assistant Net Library. - Copyright(C) 2010, Viktor E. Bursian, St.Petersburg, Russia. Viktor.Bursian@mail.ioffe.ru */////////////////////////////////////////////////////////////////////////////// #ifndef ArrayDataFunction_H #define ArrayDataFunction_H #include "Functions.h" namespace RA { //------------------------------------------------------------------------------ ANNOUNCE_CLASS(sArrayDataFunction) //------------------------------------------------------- sArrayDataFunction --- /*! An implementation of sDataFunction with the data set stored as an array of ordinates, while the abscisses are calculated from a linear formulae. В ней число точек фиксировано и точки индексируются (то есть можно доступаться по номеру). Абциссы заведомо эквидистантны и задаются начальной точкой и шагом. */ class RANet_EXPORT sArrayDataFunction : public sDataFunction { STORABLE(sArrayDataFunction) public: //classes ANNOUNCE_CLASS(sTracer) class RANet_EXPORT sTracer : public sCurve::sTracer { public: sTracer (pcsArrayDataFunction host_curve ,rcsScales scales ); virtual ~sTracer () {} public: virtual bool NextPoint (); virtual bool NextLineSegment (); protected: pcsArrayDataFunction TheFunction; private: sPoint Scaling; int LastPointNo; int PointNo; int LineSegmentNo; }; public: virtual ~sArrayDataFunction (); sArrayDataFunction (int number_of_points ,real x0 = 0 ,real step = 1); sArrayDataFunction (rcsPhysPair multiplier ,int number_of_points ,real x0 = 0 ,real step = 1); // sArrayDataFunction (rcsArrayDataFunction); // virtual psMathValue Replica () const // { return new sArrayDataFunction(*this); } virtual sString Hint () { return sString(); } virtual sCurve::psTracer GetCurveTracer (rcsScales scales) const; // virtual sPhysValue Value (rcsPhysValue x) const; virtual int NumberOfPoints () const { return TheNumberOfPoints; } real X0 () const { return TheX0; } real Step () const { return TheStep; } virtual sPoint Point (const int N) const; virtual real PointX (const int N) const { return TheX0+N*TheStep; } virtual real PointY (const int N) const; virtual void SetX0 (real); virtual void SetStep (real); virtual void SetValue (int N ,real V); protected: //fields int TheNumberOfPoints; real TheX0; real TheStep; real * Values; }; //------------------------------------------------------------------------------ } //namespace RA #endif