MultivariateFunctionLayer.h

00001 
00005 #ifndef _MultivariateFunctionLayer_h
00006 #define _MultivariateFunctionLayer_h
00007 
00008 // SYSTEM INCLUDES
00009 //
00010 
00011 // PROJECT INCLUDES
00012 //
00013 
00014 // LOCAL INCLUDES
00015 //
00016 #include "../FunctionBase.h"
00017 #include "IntervalCountLimiter.h"
00018 #include "PlotLayer.h"
00019 
00020 // FORWARD REFERENCES
00021 //
00022 
00023 class MultivariateFunctionLayer
00024     : public PlotLayer
00025 {
00026 public:
00027 // LIFECYCLE
00028 
00031     MultivariateFunctionLayer(const PlotControl&    targetPlot,
00032                               const FunctionBase&   function,
00033                               unsigned              variable1Index = 0,
00034                               unsigned              variable2Index = 1);
00035 
00038     MultivariateFunctionLayer(const MultivariateFunctionLayer& from);
00039 
00042     ~MultivariateFunctionLayer(void);
00043 
00044 
00045 // OPERATORS
00046 // OPERATIONS
00047 
00048     virtual void    Draw(wxDC& dc) const;
00049 
00050 // ACCESS
00051 // INQUIRY
00052 
00053 protected:
00054 private:
00056     class FixedCountLimiter
00057         : public IntervalCountLimiter
00058     {
00059     public:
00060         FixedCountLimiter(unsigned maximumCount);
00061 
00062         virtual unsigned operator()(double intervalLength) const;
00063     private:
00064         unsigned mMaximumCount;
00065     };
00066 
00067 
00068     void        DrawPlotLine(wxDC&  dc,
00069                              double x1,
00070                              double y1,
00071                              double x2,
00072                              double y2) const;
00073 
00074     double*     ComputeContourLevels(double     plotMin,
00075                                      double     plotMax,
00076                                      unsigned&  levelCount) const;
00077 
00078     void        conrec(double** d,
00079                        int      ilb,
00080                        int      iub,
00081                        int      jlb,
00082                        int      jub,
00083                        double*  x,
00084                        double*  y,
00085                        int      nc,
00086                        double*  z,
00087                        wxDC&    dc) const;
00088 
00089 
00090 
00091     const FunctionBase& mFunction;
00092 
00093     unsigned            mVariableXIndex;
00094     unsigned            mVariableYIndex;
00095 };
00096 
00097 // INLINE METHODS
00098 //
00099 
00100 // EXTERNAL REFERENCES
00101 //
00102 
00103 #endif  // _MultivariateFunctionLayer_h

Wygenerowano Fri Sep 29 21:04:49 2006 dla EduOptim2 programem  doxygen 1.4.6