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

Generated for HippoDraw Class Library by doxygen