Linear.cxx
Go to the documentation of this file.
1 
12 #ifdef _MSC_VER
13 #include "msdevstudio/MSconfig.h"
14 #endif
15 
16 #include "Linear.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 Linear::Linear ( )
31 {
32  initialize ();
33 }
34 
35 Linear::Linear ( double intercept, double slope )
36 {
37  initialize ();
38 
39  m_parms[0] = intercept;
40  m_parms[1] = slope;
41 }
42 
43 void Linear::initialize ()
44 {
45  m_name = "Linear";
46  m_parm_names.push_back ( "Intercept" );
47  m_parm_names.push_back ( "Slope" );
48 
49  resize ();
50 }
51 
53 {
54  return new Linear ( *this );
55 }
56 
57 double Linear::operator () ( double x ) const
58 {
59  return x * m_parms[1] + m_parms[0];
60 }
61 
62 /* virtual */
63 void
64 Linear::
65 initialParameters ( const FunctionHelper * helper )
66 {
67  double min_x = helper->minCoord ();
68  double max_x = helper->maxCoord ();
69 
70  double min_y = helper->minValue ();
71  double max_y = helper->maxValue ();
72 
73  m_parms[1] = ( max_y - min_y ) / ( max_x - min_x );
74  m_parms[0] = max_y - m_parms[1] * max_x;
75 }
76 
77 double Linear::derivByParm ( int i, double x ) const
78 {
79  switch ( i ) {
80  case 0 :
81  return 1.0;
82  break;
83 
84  case 1 :
85  return x;
86  break;
87 
88  default:
89  assert ( false );
90  break;
91  }
92  return 0.0;
93 }
94 
95 } // namespace hippodraw
96 

Generated for HippoDraw Class Library by doxygen