776 typedef typename Field_T::value_type Data_T;
781 FIELD3D_VEC3_T<double> p(vsP - FIELD3D_VEC3_T<double>(0.5));
784 V3i c1(static_cast<int>(
floor(p.x)),
785 static_cast<int>(
floor(p.y)),
786 static_cast<int>(
floor(p.z)));
790 FIELD3D_VEC3_T<double> f1(
static_cast<FIELD3D_VEC3_T<double>
>(c2) - p);
792 FIELD3D_VEC3_T<double> f2(
static_cast<FIELD3D_VEC3_T<double>
>(1.0) - f1);
794 const Box3i &dataWindow = data.dataWindow();
797 c1.x = std::min(dataWindow.max.x, std::max(dataWindow.min.x, c1.x));
798 c1.y = std::min(dataWindow.max.y, std::max(dataWindow.min.y, c1.y));
799 c1.z = std::min(dataWindow.max.z, std::max(dataWindow.min.z, c1.z));
800 c2.x = std::min(dataWindow.max.x, std::max(dataWindow.min.x, c2.x));
801 c2.y = std::min(dataWindow.max.y, std::max(dataWindow.min.y, c2.y));
802 c2.z = std::min(dataWindow.max.z, std::max(dataWindow.min.z, c2.z));
804 return static_cast<Data_T
> 805 (f1.x * (f1.y * (f1.z * data.fastValue(c1.x, c1.y, c1.z) +
806 f2.z * data.fastValue(c1.x, c1.y, c2.z)) +
807 f2.y * (f1.z * data.fastValue(c1.x, c2.y, c1.z) +
808 f2.z * data.fastValue(c1.x, c2.y, c2.z))) +
809 f2.x * (f1.y * (f1.z * data.fastValue(c2.x, c1.y, c1.z) +
810 f2.z * data.fastValue(c2.x, c1.y, c2.z)) +
811 f2.y * (f1.z * data.fastValue(c2.x, c2.y, c1.z) +
812 f2.z * data.fastValue(c2.x, c2.y, c2.z))));
FIELD3D_VEC3_T< T > floor(const FIELD3D_VEC3_T< T > &v)
Floor function for Vec3.