1085{
1086 typedef typename Field_T::value_type Data_T;
1087
1088
1089
1090
1094 FIELD3D_VEC3_T<double> p(clampedVsP - FIELD3D_VEC3_T<double>(0.5));
1095
1096 const Box3i &dataWindow = data.dataWindow();
1097
1098
1099 V3i c(
static_cast<int>(
floor(p.x)),
1100 static_cast<int>(
floor(p.y)),
1101 static_cast<int>(
floor(p.z)));
1102
1103
1104 FIELD3D_VEC3_T<double> t(p - static_cast<FIELD3D_VEC3_T<double> >(c));
1105
1106
1107 int im, jm, km;
1111 int im_1, jm_1, km_1;
1115 int im1, jm1, km1;
1119 int im2, jm2, km2;
1123
1125 data.fastValue(im_1, jm_1, km),
1126 data.fastValue(im_1, jm_1, km1),
1127 data.fastValue(im_1, jm_1, km2), t.z);
1129 data.fastValue(im_1, jm, km),
1130 data.fastValue(im_1, jm, km1),
1131 data.fastValue(im_1, jm, km2), t.z);
1133 data.fastValue(im_1, jm1, km),
1134 data.fastValue(im_1, jm1, km1),
1135 data.fastValue(im_1, jm1, km2), t.z);
1137 data.fastValue(im_1, jm2, km),
1138 data.fastValue(im_1, jm2, km1),
1139 data.fastValue(im_1, jm2, km2), t.z);
1140
1142 data.fastValue(im, jm_1, km),
1143 data.fastValue(im, jm_1, km1),
1144 data.fastValue(im, jm_1, km2), t.z);
1146 data.fastValue(im, jm, km),
1147 data.fastValue(im, jm, km1),
1148 data.fastValue(im, jm, km2), t.z);
1150 data.fastValue(im, jm1, km),
1151 data.fastValue(im, jm1, km1),
1152 data.fastValue(im, jm1, km2), t.z);
1154 data.fastValue(im, jm2, km),
1155 data.fastValue(im, jm2, km1),
1156 data.fastValue(im, jm2, km2), t.z);
1157
1159 data.fastValue(im1, jm_1, km),
1160 data.fastValue(im1, jm_1, km1),
1161 data.fastValue(im1, jm_1, km2), t.z);
1163 data.fastValue(im1, jm, km),
1164 data.fastValue(im1, jm, km1),
1165 data.fastValue(im1, jm, km2), t.z);
1167 data.fastValue(im1, jm1, km),
1168 data.fastValue(im1, jm1, km1),
1169 data.fastValue(im1, jm1, km2), t.z);
1171 data.fastValue(im1, jm2, km),
1172 data.fastValue(im1, jm2, km1),
1173 data.fastValue(im1, jm2, km2), t.z);
1174
1176 data.fastValue(im2, jm_1, km),
1177 data.fastValue(im2, jm_1, km1),
1178 data.fastValue(im2, jm_1, km2), t.z);
1180 data.fastValue(im2, jm, km),
1181 data.fastValue(im2, jm, km1),
1182 data.fastValue(im2, jm, km2), t.z);
1184 data.fastValue(im2, jm1, km),
1185 data.fastValue(im2, jm1, km1),
1186 data.fastValue(im2, jm1, km2), t.z);
1188 data.fastValue(im2, jm2, km),
1189 data.fastValue(im2, jm2, km1),
1190 data.fastValue(im2, jm2, km2), t.z);
1191
1196
1198
1199 return z0;
1200}
Data_T monotonicCubicInterpolant(const Data_T &f1, const Data_T &f2, const Data_T &f3, const Data_T &f4, double t)
Monotonic cubic interpolation References: http://en.wikipedia.org/wiki/Monotone_cubic_interpolation h...
T max(const T a, const T2 b)
Max operation on mixed types.
T min(const T a, const T2 b)
Min operation on mixed types.
FIELD3D_VEC3_T< T > floor(const FIELD3D_VEC3_T< T > &v)
Floor function for Vec3.