23 template <
typename Real>
28 IntpBicubic2(
int xBound,
int yBound, Real xMin, Real xSpacing,
29 Real yMin, Real ySpacing, Real
const* F,
bool catmullRom);
35 inline Real
const*
GetF()
const;
50 Real
operator()(
int xOrder,
int yOrder, Real x, Real y)
const;
61 template <
typename Real>
63 Real xSpacing, Real yMin, Real ySpacing, Real
const* F,
bool catmullRom)
100 mBlend[3][2] = (Real)-0.5;
105 mBlend[0][0] = (Real)1 / (Real)6;
106 mBlend[0][1] = (Real)-3 / (Real)6;
107 mBlend[0][2] = (Real)3 / (Real)6;
108 mBlend[0][3] = (Real)-1 / (Real)6;;
109 mBlend[1][0] = (Real)4 / (Real)6;
110 mBlend[1][1] = (Real)0 / (Real)6;
111 mBlend[1][2] = (Real)-6 / (Real)6;
112 mBlend[1][3] = (Real)3 / (Real)6;
113 mBlend[2][0] = (Real)1 / (Real)6;
114 mBlend[2][1] = (Real)3 / (Real)6;
115 mBlend[2][2] = (Real)3 / (Real)6;
116 mBlend[2][3] = (Real)-3 / (Real)6;
117 mBlend[3][0] = (Real)0 / (Real)6;
118 mBlend[3][1] = (Real)0 / (Real)6;
119 mBlend[3][2] = (Real)0 / (Real)6;
120 mBlend[3][3] = (Real)1 / (Real)6;
124 template <
typename Real>
inline 130 template <
typename Real>
inline 136 template <
typename Real>
inline 142 template <
typename Real>
inline 148 template <
typename Real>
inline 154 template <
typename Real>
inline 160 template <
typename Real>
inline 166 template <
typename Real>
inline 172 template <
typename Real>
inline 178 template <
typename Real>
inline 184 template <
typename Real>
189 int ix =
static_cast<int>(xIndex);
201 int iy =
static_cast<int>(yIndex);
229 for (
int col = 0; col < 4; ++col)
242 int yClamp = iy +
row;
252 for (
int col = 0; col < 4; ++col)
254 int xClamp = ix + col;
264 result += P[col] * Q[
row] *
mF[xClamp +
mXBound * yClamp];
271 template <
typename Real>
277 int ix =
static_cast<int>(xIndex);
289 int iy =
static_cast<int>(yIndex);
299 Real U[4], dx, xMult;
314 U[2] = ((Real)2) * dx;
315 U[3] = ((Real)3) * dx * dx;
337 Real V[4], dy, yMult;
352 V[2] = ((Real)2) * dy;
353 V[3] = ((Real)3) * dy * dy;
361 V[3] = ((Real)6) * dy;
381 for (
int col = 0; col < 4; ++col)
394 int yClamp = iy +
row;
404 for (
int col = 0; col < 4; ++col)
406 int xClamp = ix + col;
416 result += P[col] * Q[
row] *
mF[xClamp +
mXBound * yClamp];
419 result *= xMult * yMult;
#define LogAssert(condition, message)
IntpBicubic2(int xBound, int yBound, Real xMin, Real xSpacing, Real yMin, Real ySpacing, Real const *F, bool catmullRom)
Real const * GetF() const
GLenum GLenum GLsizei void * row
Real operator()(Real x, Real y) const