r510: no message
[ctsim.git] / libctsupport / cubicinterp.cpp
index 8392dec898d93412c4bcc20758ae4f37fb1f9846..fa51f7b47fd52f15ee6a5dcf6c48925922c943cf 100644 (file)
@@ -2,7 +2,7 @@
 **  This is part of the CTSim program
 **  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: cubicinterp.cpp,v 1.1 2001/02/09 01:54:21 kevin Exp $
+**  $Id: cubicinterp.cpp,v 1.3 2001/02/09 14:34:16 kevin Exp $
 **
 **  This program is free software; you can redistribute it and/or modify
 **  it under the terms of the GNU General Public License (version 2) as
 CubicInterpolator::CubicInterpolator (const double* const y, const int n)
   : m_pdY(y), m_n(n)
 {
+  // Precalculate 2nd derivative of y and put in m_pdY2
+  // Calculated by solving set of simultaneous cubic spline equations
+  // Only n-2 cubic spline equations, but able to make two more
+  // equations by setting second derivative to 0 at ends 
+
   m_pdY2 = new double [n];
-  m_pdY2[0] = 0.0;   // second deriviative = 0 at beginning and end
+  m_pdY2[0] = 0;   // second deriviative = 0 at beginning and end
   m_pdY2[n-1] = 0;
 
   double* temp = new double [n - 1];
-  temp[0] = 0.0
+  temp[0] = 0;
   for (int i = 1; i < n - 1; i++) { 
     double t = 2 + (0.5 * m_pdY2[i-1]);
     temp[i] = y[i+1] + y[i-1] - y[i] - y[i];
@@ -64,7 +69,7 @@ CubicInterpolator::interpolate (double x)
   }
 
   double loFr = hi - x;
-  double hiFr = 1 - a;
+  double hiFr = 1 - loFr;
   double y = loFr * m_pdY[lo] + hiFr * m_pdY[hi];
   y += oneSixth * ((loFr*loFr*loFr - loFr) * m_pdY2[lo] + (hiFr*hiFr*hiFr - hiFr) * m_pdY2[hi]);