{
typedef typename Data_T::BaseType T;
Data_T ret;
V3d clampedVsP(std::max(0.5, vsP.x),
std::max(0.5, vsP.y),
std::max(0.5, vsP.z));
FIELD3D_VEC3_T<double> p(vsP.x,
clampedVsP.y - 0.5,
clampedVsP.z - 0.5);
V3i c(static_cast<int>(floor(p.x)),
static_cast<int>(floor(p.y)),
static_cast<int>(floor(p.z)));
FIELD3D_VEC3_T<double> t(p - static_cast<FIELD3D_VEC3_T<double> >(c));
{
int im, jm, km;
im = std::max(dataWindow.min.x, std::min(c.x, dataWindow.max.x + 1));
jm = std::max(dataWindow.min.y, std::min(c.y, dataWindow.max.y));
km = std::max(dataWindow.min.z, std::min(c.z, dataWindow.max.z));
int im_1, jm_1, km_1;
im_1 = std::max(dataWindow.min.x, std::min(im - 1, dataWindow.max.x + 1));
jm_1 = std::max(dataWindow.min.y, std::min(jm - 1, dataWindow.max.y));
km_1 = std::max(dataWindow.min.z, std::min(km - 1, dataWindow.max.z));
int im1, jm1, km1;
im1 = std::max(dataWindow.min.x, std::min(im + 1, dataWindow.max.x + 1));
jm1 = std::max(dataWindow.min.y, std::min(jm + 1, dataWindow.max.y));
km1 = std::max(dataWindow.min.z, std::min(km + 1, dataWindow.max.z));
int im2, jm2, km2;
im2 = std::max(dataWindow.min.x, std::min(im + 2, dataWindow.max.x + 1));
jm2 = std::max(dataWindow.min.y, std::min(jm + 2, dataWindow.max.y));
km2 = std::max(dataWindow.min.z, std::min(km + 2, dataWindow.max.z));
data.
u(im_1, jm_1, km2), t.z);
data.
u(im_1, jm, km2), t.z);
data.
u(im_1, jm1, km2), t.z);
data.
u(im_1, jm2, km2), t.z);
data.
u(im, jm_1, km2), t.z);
data.
u(im, jm, km2), t.z);
data.
u(im, jm1, km2), t.z);
data.
u(im, jm2, km2), t.z);
data.
u(im1, jm_1, km2), t.z);
data.
u(im1, jm, km2), t.z);
data.
u(im1, jm1, km2), t.z);
data.
u(im1, jm2, km2), t.z);
data.
u(im2, jm_1, km2), t.z);
data.
u(im2, jm, km2), t.z);
data.
u(im2, jm1, km2), t.z);
data.
u(im2, jm2, km2), t.z);
}
p.setValue(clampedVsP.x - 0.5, vsP.y , clampedVsP.z - 0.5);
c.x = static_cast<int>(floor(p.x));
c.y = static_cast<int>(floor(p.y));
c.z = static_cast<int>(floor(p.z));
t.setValue(p - static_cast<FIELD3D_VEC3_T<double> >(c));
{
int im, jm, km;
im = std::max(dataWindow.min.x, std::min(c.x, dataWindow.max.x));
jm = std::max(dataWindow.min.y, std::min(c.y, dataWindow.max.y + 1));
km = std::max(dataWindow.min.z, std::min(c.z, dataWindow.max.z));
int im_1, jm_1, km_1;
im_1 = std::max(dataWindow.min.x, std::min(im - 1, dataWindow.max.x));
jm_1 = std::max(dataWindow.min.y, std::min(jm - 1, dataWindow.max.y + 1));
km_1 = std::max(dataWindow.min.z, std::min(km - 1, dataWindow.max.z));
int im1, jm1, km1;
im1 = std::max(dataWindow.min.x, std::min(im + 1, dataWindow.max.x));
jm1 = std::max(dataWindow.min.y, std::min(jm + 1, dataWindow.max.y + 1));
km1 = std::max(dataWindow.min.z, std::min(km + 1, dataWindow.max.z));
int im2, jm2, km2;
im2 = std::max(dataWindow.min.x, std::min(im + 2, dataWindow.max.x));
jm2 = std::max(dataWindow.min.y, std::min(jm + 2, dataWindow.max.y + 1));
km2 = std::max(dataWindow.min.z, std::min(km + 2, dataWindow.max.z));
data.
v(im_1, jm_1, km2), t.z);
data.
v(im_1, jm, km2), t.z);
data.
v(im_1, jm1, km2), t.z);
data.
v(im_1, jm2, km2), t.z);
data.
v(im, jm_1, km2), t.z);
data.
v(im, jm, km2), t.z);
data.
v(im, jm1, km2), t.z);
data.
v(im, jm2, km2), t.z);
data.
v(im1, jm_1, km2), t.z);
data.
v(im1, jm, km2), t.z);
data.
v(im1, jm1, km2), t.z);
data.
v(im1, jm2, km2), t.z);
data.
v(im2, jm_1, km2), t.z);
data.
v(im2, jm, km2), t.z);
data.
v(im2, jm1, km2), t.z);
data.
v(im2, jm2, km2), t.z);
}
p.setValue(clampedVsP.x - 0.5 , clampedVsP.y - 0.5, vsP.z);
c.x = static_cast<int>(floor(p.x));
c.y = static_cast<int>(floor(p.y));
c.z = static_cast<int>(floor(p.z));
t.setValue(p - static_cast<FIELD3D_VEC3_T<double> >(c));
{
int im, jm, km;
im = std::max(dataWindow.min.x, std::min(c.x, dataWindow.max.x));
jm = std::max(dataWindow.min.y, std::min(c.y, dataWindow.max.y));
km = std::max(dataWindow.min.z, std::min(c.z, dataWindow.max.z + 1));
int im_1, jm_1, km_1;
im_1 = std::max(dataWindow.min.x, std::min(im - 1, dataWindow.max.x));
jm_1 = std::max(dataWindow.min.y, std::min(jm - 1, dataWindow.max.y));
km_1 = std::max(dataWindow.min.z, std::min(km - 1, dataWindow.max.z + 1));
int im1, jm1, km1;
im1 = std::max(dataWindow.min.x, std::min(im + 1, dataWindow.max.x));
jm1 = std::max(dataWindow.min.y, std::min(jm + 1, dataWindow.max.y));
km1 = std::max(dataWindow.min.z, std::min(km + 1, dataWindow.max.z + 1));
int im2, jm2, km2;
im2 = std::max(dataWindow.min.x, std::min(im + 2, dataWindow.max.x));
jm2 = std::max(dataWindow.min.y, std::min(jm + 2, dataWindow.max.y));
km2 = std::max(dataWindow.min.z, std::min(km + 2, dataWindow.max.z + 1));
data.
w(im_1, jm_1, km2), t.z);
data.
w(im_1, jm, km2), t.z);
data.
w(im_1, jm1, km2), t.z);
data.
w(im_1, jm2, km2), t.z);
data.
w(im, jm_1, km2), t.z);
data.
w(im, jm, km2), t.z);
data.
w(im, jm1, km2), t.z);
data.
w(im, jm2, km2), t.z);
data.
w(im1, jm_1, km2), t.z);
data.
w(im1, jm, km2), t.z);
data.
w(im1, jm1, km2), t.z);
data.
w(im1, jm2, km2), t.z);
data.
w(im2, jm_1, km2), t.z);
data.
w(im2, jm, km2), t.z);
data.
w(im2, jm1, km2), t.z);
data.
w(im2, jm2, km2), t.z);
}
return ret;
}