X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=include%2Finterpolator.h;h=6b3469ba01a4e4674352473beff7024880dfd5c1;hb=40ef0ef58e4d5617d7ddb7b1d145e8981b61215f;hp=94b9b1227b0d4648f93765291ad5e732daf5fb93;hpb=8e3ba3d86e5b1293140adab70ecc0b6a20e2f651;p=ctsim.git diff --git a/include/interpolator.h b/include/interpolator.h index 94b9b12..6b3469b 100644 --- a/include/interpolator.h +++ b/include/interpolator.h @@ -2,7 +2,7 @@ ** This is part of the CTSim program ** Copyright (c) 1983-2001 Kevin Rosenberg ** -** $Id: interpolator.h,v 1.6 2002/06/27 01:48:25 kevin Exp $ +** $Id: interpolator.h,v 1.8 2003/01/30 21:53: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 @@ -73,16 +73,16 @@ public: 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) - result = m_ppMatrix[m_nx-1][m_ny-1]; + result = static_cast(m_ppMatrix[m_nx-1][m_ny-1]); else if (iFloorX == m_nx - 1) - result = m_ppMatrix[iFloorX][iFloorY] + dYFrac * (m_ppMatrix[iFloorX][iFloorY+1] - m_ppMatrix[iFloorX][iFloorY]); + result = static_cast(m_ppMatrix[iFloorX][iFloorY] + dYFrac * (m_ppMatrix[iFloorX][iFloorY+1] - m_ppMatrix[iFloorX][iFloorY])); else if (iFloorY == m_ny - 1) - result = m_ppMatrix[iFloorX][iFloorY] + dXFrac * (m_ppMatrix[iFloorX+1][iFloorY] - m_ppMatrix[iFloorX][iFloorY]); + result = static_cast(m_ppMatrix[iFloorX][iFloorY] + dXFrac * (m_ppMatrix[iFloorX+1][iFloorY] - m_ppMatrix[iFloorX][iFloorY])); else - result = (1 - dXFrac) * (1 - dYFrac) * m_ppMatrix[iFloorX][iFloorY] + + result = static_cast((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]; + dXFrac * dYFrac * m_ppMatrix[iFloorX+1][iFloorY+1]); return result; } @@ -103,10 +103,10 @@ public: T interpolate (double dXPos, double dYPos) { - int iFloorX = floor (dXPos); - int iFloorY = floor (dYPos); - double dXFrac = dXPos - iFloorX; - double dYFrac = dYPos - iFloorY; + // int iFloorX = static_cast(floor (dXPos)); + // int iFloorY = static_cast(floor (dYPos)); + // double dXFrac = dXPos - iFloorX; + // double dYFrac = dYPos - iFloorY; T result = 0; @@ -122,7 +122,7 @@ class LinearInterpolator { private: T* const m_pX; T* const m_pY; - const unsigned int m_n; + const int m_n; const bool m_bZeroOutsideRange; public: @@ -154,7 +154,7 @@ public: else result = m_pY[m_n - 1]; } else { - int iFloor = floor(dX); + int iFloor = static_cast(floor(dX)); result = m_pY[iFloor] + (m_pY[iFloor+1] - m_pY[iFloor]) * (dX - iFloor); } } else {