952 FIELD3D_VEC3_T<double> p;
954 FIELD3D_VEC3_T<double> f1;
955 FIELD3D_VEC3_T<double> f2;
961 p.setValue<>(vsP.x, vsP.y-0.5, vsP.z-0.5);
964 c1.x =
static_cast<int>(
floor(p.x));
965 c1.y =
static_cast<int>(
floor(p.y));
966 c1.z =
static_cast<int>(
floor(p.z));
974 f1.setValue(
static_cast<FIELD3D_VEC3_T<double>
>(c2) - p);
976 f2.setValue(
static_cast<FIELD3D_VEC3_T<double>
>(1.0) - f1);
979 c1.x = std::min(dataWindow.max.x + 1, std::max(dataWindow.min.x, c1.x));
980 c1.y = std::min(dataWindow.max.y, std::max(dataWindow.min.y, c1.y));
981 c1.z = std::min(dataWindow.max.z, std::max(dataWindow.min.z, c1.z));
982 c2.x = std::min(dataWindow.max.x + 1, std::max(dataWindow.min.x, c2.x));
983 c2.y = std::min(dataWindow.max.y, std::max(dataWindow.min.y, c2.y));
984 c2.z = std::min(dataWindow.max.z, std::max(dataWindow.min.z, c2.z));
986 ret = (f1.x * (f1.y * (f1.z * data.
u(c1.x, c1.y, c1.z) +
987 f2.z * data.
u(c1.x, c1.y, c2.z)) +
988 f2.y * (f1.z * data.
u(c1.x, c2.y, c1.z) +
989 f2.z * data.
u(c1.x, c2.y, c2.z))) +
990 f2.x * (f1.y * (f1.z * data.
u(c2.x, c1.y, c1.z) +
991 f2.z * data.
u(c2.x, c1.y, c2.z)) +
992 f2.y * (f1.z * data.
u(c2.x, c2.y, c1.z) +
993 f2.z * data.
u(c2.x, c2.y, c2.z))));
999 p.setValue(vsP.x-0.5, vsP.y, vsP.z-0.5);
1002 c1.x =
static_cast<int>(
floor(p.x ));
1003 c1.y =
static_cast<int>(
floor(p.y ));
1004 c1.z =
static_cast<int>(
floor(p.z ));
1012 f1.setValue(
static_cast<FIELD3D_VEC3_T<double>
>(c2) - p);
1014 f2.setValue(
static_cast<FIELD3D_VEC3_T<double>
>(1.0) - f1);
1017 c1.x = std::min(dataWindow.max.x, std::max(dataWindow.min.x, c1.x));
1018 c1.y = std::min(dataWindow.max.y + 1, std::max(dataWindow.min.y, c1.y));
1019 c1.z = std::min(dataWindow.max.z, std::max(dataWindow.min.z, c1.z));
1020 c2.x = std::min(dataWindow.max.x, std::max(dataWindow.min.x, c2.x));
1021 c2.y = std::min(dataWindow.max.y + 1, std::max(dataWindow.min.y, c2.y));
1022 c2.z = std::min(dataWindow.max.z, std::max(dataWindow.min.z, c2.z));
1024 ret = (f1.x * (f1.y * (f1.z * data.
v(c1.x, c1.y, c1.z) +
1025 f2.z * data.
v(c1.x, c1.y, c2.z)) +
1026 f2.y * (f1.z * data.
v(c1.x, c2.y, c1.z) +
1027 f2.z * data.
v(c1.x, c2.y, c2.z))) +
1028 f2.x * (f1.y * (f1.z * data.
v(c2.x, c1.y, c1.z) +
1029 f2.z * data.
v(c2.x, c1.y, c2.z)) +
1030 f2.y * (f1.z * data.
v(c2.x, c2.y, c1.z) +
1031 f2.z * data.
v(c2.x, c2.y, c2.z))));
1037 p.setValue(vsP.x-0.5, vsP.y-0.5, vsP.z);
1040 c1.x =
static_cast<int>(
floor(p.x ));
1041 c1.y =
static_cast<int>(
floor(p.y ));
1042 c1.z =
static_cast<int>(
floor(p.z ));
1050 f1.setValue(
static_cast<FIELD3D_VEC3_T<double>
>(c2) - p);
1052 f2.setValue(
static_cast<FIELD3D_VEC3_T<double>
>(1.0) - f1);
1055 c1.x = std::min(dataWindow.max.x, std::max(dataWindow.min.x, c1.x));
1056 c1.y = std::min(dataWindow.max.y, std::max(dataWindow.min.y, c1.y));
1057 c1.z = std::min(dataWindow.max.z + 1, std::max(dataWindow.min.z, c1.z));
1058 c2.x = std::min(dataWindow.max.x, std::max(dataWindow.min.x, c2.x));
1059 c2.y = std::min(dataWindow.max.y, std::max(dataWindow.min.y, c2.y));
1060 c2.z = std::min(dataWindow.max.z + 1, std::max(dataWindow.min.z, c2.z));
1062 ret = (f1.x * (f1.y * (f1.z * data.
w(c1.x, c1.y, c1.z) +
1063 f2.z * data.
w(c1.x, c1.y, c2.z)) +
1064 f2.y * (f1.z * data.
w(c1.x, c2.y, c1.z) +
1065 f2.z * data.
w(c1.x, c2.y, c2.z))) +
1066 f2.x * (f1.y * (f1.z * data.
w(c2.x, c1.y, c1.z) +
1067 f2.z * data.
w(c2.x, c1.y, c2.z)) +
1068 f2.y * (f1.z * data.
w(c2.x, c2.y, c1.z) +
1069 f2.z * data.
w(c2.x, c2.y, c2.z))));
const real_t & v(int i, int j, int k) const
Read access to value on v-facing wall.
const real_t & u(int i, int j, int k) const
Read access to value on u-facing wall.
const real_t & w(int i, int j, int k) const
Read access to value on w-facing wall.
FIELD3D_VEC3_T< T > floor(const FIELD3D_VEC3_T< T > &v)
Floor function for Vec3.
const Box3i & dataWindow() const
Returns the data window. Any coordinate inside this window is safe to pass to value() in the Field su...