Update copyright date; remove old CVS keyword
[ctsim.git] / include / interpolator.h
index c1f454288c055d5f1d3db56384fc77c45b49897d..e93e2f50a73396033200368bdbadd7b5d99479e3 100644 (file)
@@ -1,8 +1,6 @@
 /*****************************************************************************
 **  This is part of the CTSim program
-**  Copyright (c) 1983-2001 Kevin Rosenberg
-**
-**  $Id$
+**  Copyright (c) 1983-2009 Kevin Rosenberg
 **
 **  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
@@ -60,16 +58,16 @@ public:
   BilinearInterpolator (T** ppMatrix, unsigned int nx, unsigned int ny)
   : m_ppMatrix(ppMatrix), m_nx(nx), m_ny(ny)
   {}
-  
+
   T interpolate (double dXPos, double dYPos)
 {
   int iFloorX = static_cast<int>(floor(dXPos));
   int iFloorY = static_cast<int>(floor (dYPos));
   double dXFrac = dXPos - iFloorX;
   double dYFrac = dYPos - iFloorY;
-  
+
   T result = 0;
-  
+
   if (iFloorX < 0 || iFloorY < 0 || iFloorX > m_nx-1 || iFloorY > m_ny-1)
     result = 0;
   else if (iFloorX == m_nx - 1 && iFloorY == m_ny - 1)
@@ -80,11 +78,11 @@ public:
       result = static_cast<T>(m_ppMatrix[iFloorX][iFloorY] + dXFrac * (m_ppMatrix[iFloorX+1][iFloorY] - m_ppMatrix[iFloorX][iFloorY]));
   else
     result = static_cast<T>
-      ((1 - dXFrac) * (1 - dYFrac) * m_ppMatrix[iFloorX][iFloorY] + 
-       dXFrac * (1 - dYFrac) * m_ppMatrix[iFloorX+1][iFloorY] + 
+      ((1 - dXFrac) * (1 - dYFrac) * m_ppMatrix[iFloorX][iFloorY] +
+       dXFrac * (1 - dYFrac) * m_ppMatrix[iFloorX+1][iFloorY] +
        dYFrac * (1 - dXFrac) * m_ppMatrix[iFloorX][iFloorY+1] +
        dXFrac * dYFrac * m_ppMatrix[iFloorX+1][iFloorY+1]);
-  
+
   return result;
 }
     };
@@ -97,10 +95,10 @@ private:
   const int m_nAngle;
   const int m_nPos;
   int m_nCenterPos;
-  
+
 public:
   BilinearPolarInterpolator (T** ppMatrix, unsigned int nAngle,
-                            unsigned int nPos)
+                             unsigned int nPos)
   : m_ppMatrix(ppMatrix), m_nAngle(nAngle), m_nPos(nPos)
   {
     if (m_nPos %2)
@@ -115,9 +113,9 @@ public:
   int iFloorPos = static_cast<int>(floor (dPos));
   double dAngleFrac = dAngle - iFloorAngle;
   double dPosFrac = dPos - iFloorPos;
-  
+
   T result = 0;
-  
+
   if (iFloorAngle < -1 || iFloorPos < 0 || iFloorAngle > m_nAngle-1 || iFloorPos > m_nPos-1)
     result = 0;
   else if (iFloorAngle == -1 && iFloorPos == m_nPos-1)
@@ -132,25 +130,25 @@ public:
       int iLowerPos = (m_nPos-1) - iFloorPos;
       int iUpperPos = (m_nPos-1) - (iFloorPos+1);
       result = static_cast<T>
-       ((1-dAngleFrac) * (1-dPosFrac) * m_ppMatrix[iFloorAngle][iFloorPos] + 
-        dAngleFrac * (1-dPosFrac) * m_ppMatrix[iUpperAngle][iLowerPos] + 
-        dPosFrac * (1-dAngleFrac) * m_ppMatrix[iFloorAngle][iFloorPos+1] +
-        dAngleFrac * dPosFrac * m_ppMatrix[iUpperAngle][iUpperPos]);
+        ((1-dAngleFrac) * (1-dPosFrac) * m_ppMatrix[iFloorAngle][iFloorPos] +
+         dAngleFrac * (1-dPosFrac) * m_ppMatrix[iUpperAngle][iLowerPos] +
+         dPosFrac * (1-dAngleFrac) * m_ppMatrix[iFloorAngle][iFloorPos+1] +
+         dAngleFrac * dPosFrac * m_ppMatrix[iUpperAngle][iUpperPos]);
     } else if (iFloorAngle == -1) {
       int iLowerAngle = m_nAngle - 1;
       int iLowerPos = (m_nPos-1) - iFloorPos;
       int iUpperPos = (m_nPos-1) - (iFloorPos+1);
       result = static_cast<T>
-       ((1-dAngleFrac) * (1-dPosFrac) * m_ppMatrix[iLowerAngle][iLowerPos] + 
-        dAngleFrac * (1-dPosFrac) * m_ppMatrix[iFloorAngle+1][iFloorPos] + 
-        dPosFrac * (1-dAngleFrac) * m_ppMatrix[iLowerAngle][iUpperPos] +
-        dAngleFrac * dPosFrac * m_ppMatrix[iFloorAngle+1][iFloorPos+1]);
+        ((1-dAngleFrac) * (1-dPosFrac) * m_ppMatrix[iLowerAngle][iLowerPos] +
+         dAngleFrac * (1-dPosFrac) * m_ppMatrix[iFloorAngle+1][iFloorPos] +
+         dPosFrac * (1-dAngleFrac) * m_ppMatrix[iLowerAngle][iUpperPos] +
+         dAngleFrac * dPosFrac * m_ppMatrix[iFloorAngle+1][iFloorPos+1]);
     } else
       result = static_cast<T>
-       ((1-dAngleFrac) * (1-dPosFrac) * m_ppMatrix[iFloorAngle][iFloorPos] + 
-        dAngleFrac * (1-dPosFrac) * m_ppMatrix[iFloorAngle+1][iFloorPos] + 
-        dPosFrac * (1-dAngleFrac) * m_ppMatrix[iFloorAngle][iFloorPos+1] +
-        dAngleFrac * dPosFrac * m_ppMatrix[iFloorAngle+1][iFloorPos+1]);
+        ((1-dAngleFrac) * (1-dPosFrac) * m_ppMatrix[iFloorAngle][iFloorPos] +
+         dAngleFrac * (1-dPosFrac) * m_ppMatrix[iFloorAngle+1][iFloorPos] +
+         dPosFrac * (1-dAngleFrac) * m_ppMatrix[iFloorAngle][iFloorPos+1] +
+         dAngleFrac * dPosFrac * m_ppMatrix[iFloorAngle+1][iFloorPos+1]);
   }
   return result;
 }
@@ -168,7 +166,7 @@ public:
   BicubicPolyInterpolator (T** ppMatrix, unsigned int nx, unsigned int ny)
   : m_ppMatrix(ppMatrix), m_nx(nx), m_ny(ny)
   {}
-  
+
   T interpolate (double dXPos, double dYPos)
   {
     // int iFloorX = static_cast<int>(floor (dXPos));
@@ -197,11 +195,11 @@ public:
   LinearInterpolator (T* pY, unsigned int n, bool bZeroOutside = true)
   : m_pX(0), m_pY(pY), m_n(n), m_bZeroOutsideRange(bZeroOutside)
   {}
-  
+
   LinearInterpolator (T* pX, T* pY, unsigned int n, bool bZeroOutside = true)
   : m_pX(pX), m_pY(pY), m_n(n), m_bZeroOutsideRange(bZeroOutside)
   {}
-  
+
   double interpolate (double dX, int* piLastFloor = NULL)
   {
     double result = 0;