45#ifndef _INCLUDED_Field3D_MIPInterp_H_
46#define _INCLUDED_Field3D_MIPInterp_H_
60template <
typename MIPField_T>
94 InterpInfo(
const size_t l,
const size_t u,
const float t)
128template <
typename MIPField_T>
133 const V3f wsVoxelSize = mip.mapping()->wsVoxelSize(0, 0, 0);
134 const float wsMinVoxelSize =
135 std::min(std::min(wsVoxelSize.x, wsVoxelSize.y), wsVoxelSize.z);
137 for (
size_t i = 0, end = mip.numLevels(); i < end; ++i) {
138 const float factor = std::pow(2.0f,
static_cast<float>(i));
145template <
typename MIPField_T>
148 const float wsSpotSize)
const
165 V3f mipVsP0, mipVsP1;
176template <
typename MIPField_T>
180 const size_t numLevels =
m_mip.numLevels();
186 for (
size_t i = 1, end = numLevels; i < end; ++i) {
194 return InterpInfo(numLevels - 1, numLevels - 1, 0.0f);
Contains the MIPField class.
#define FIELD3D_LERPFACTOR
LinearInterpType m_interp
MIPLinearInterp(const MIPField_T &mip)
Must be constructed with a MIP field to operate on.
MIPField< Field_T >::NestedType FieldType
value_type sample(const V3d &vsP, const float wsSpotSize) const
Performs interpolation. A MIP field interpolation requires a spot size (which may be zero,...
std::vector< float > m_wsVoxelSize
FieldType::value_type value_type
FieldType::LinearInterp LinearInterpType
InterpInfo interpInfo(const float wsSpotSize) const
Computes between which levels to interpolate.
const MIPField< Field_T > & m_mip
#define FIELD3D_NAMESPACE_HEADER_CLOSE
size_t upper
Coarser level.
size_t lower
Finest level.
InterpInfo(const size_t l, const size_t u, const float t)
float lerpT
Parametric position between finest and coarser.