Quadratic.cxx
Go to the documentation of this file.
1 
12 #ifdef _MSC_VER
13 #include "msdevstudio/MSconfig.h"
14 #endif
15 
16 #include "Quadratic.h"
17 
18 #include "FunctionHelper.h"
19 
20 #include <cassert>
21 
22 #ifdef ITERATOR_MEMBER_DEFECT
23 using namespace std;
24 #else
25 using std::vector;
26 #endif
27 
28 namespace hippodraw {
29 
30 Quadratic::Quadratic ( )
31 {
32  initialize ();
33 }
34 
35 Quadratic::Quadratic ( double intercept, double linear, double quad )
36 {
37  initialize ();
38 
39  m_parms[0] = intercept;
40  m_parms[1] = linear;
41  m_parms[2] = quad;
42 }
43 
44 void Quadratic::initialize ()
45 {
46  m_name = "Quadratic";
47 
48  m_parm_names.push_back ( "Intercept" );
49  m_parm_names.push_back ( "Linear" );
50  m_parm_names.push_back ( "Quad" );
51 
52  resize ();
53 }
54 
56 {
57  return new Quadratic ( *this );
58 }
59 
60 double Quadratic::operator () ( double x ) const
61 {
62  return m_parms[0] + x * ( m_parms[1] + x * m_parms[2] );
63 }
64 
65 /* virtual */
66 void
67 Quadratic::
68 initialParameters ( const FunctionHelper * helper )
69 {
70  double min_x = helper->minCoord ();
71  double max_x = helper->maxCoord ();
72 
73  double min_y = helper->minValue ();
74  double max_y = helper->maxValue ();
75 
76  m_parms[1] = ( max_y - min_y ) / ( max_x - min_x );
77  m_parms[0] = max_y - m_parms[1] * max_x;
78  m_parms[2] = m_parms[1] / ( 5.0 * ( max_x - min_x ) );
79 }
80 
81 double Quadratic::derivByParm ( int i, double x ) const
82 {
83  switch ( i ) {
84  case 0 :
85  return 1.0;
86  break;
87 
88  case 1 :
89  return x;
90  break;
91 
92  case 2 :
93  return x * x;
94  break;
95 
96  default :
97  assert (false );
98  break;
99  }
100  return 0.0;
101 }
102 
103 } // namespace hippodraw
104 

Generated for HippoDraw Class Library by doxygen