28 #include "../common/WAssert.h"
29 #include "../common/WLimits.h"
30 #include "datastructures/WValueSetHistogram.h"
31 #include "WDataSetSingle.h"
33 #include "WDataSetScalar.h"
39 boost::shared_ptr< WGrid > newGrid )
42 WAssert( newValueSet,
"No value set given." );
43 WAssert( newGrid,
"No grid given." );
44 WAssert( newValueSet->size() == newGrid->size(),
"Number of values unequal number of positions in grid." );
45 WAssert( newValueSet->order() == 0,
"The value set does not contain scalars." );
95 boost::shared_ptr< WGridRegular3D > grid = boost::shared_dynamic_cast<
WGridRegular3D >(
m_grid );
97 WAssert( grid,
"This data set has a grid whose type is not yet supported for interpolation." );
99 "Only implemented for scalar values so far." );
101 bool isInside =
true;
102 size_t cellId = grid->getCellId( pos, &isInside );
112 WPosition localPos = grid->getTransform().positionToGridSpace( pos - grid->getPosition( vertexIds[0] ) );
114 double lambdaX = localPos[0];
115 double lambdaY = localPos[1];
116 double lambdaZ = localPos[2];
117 std::vector< double > h( 8 );
127 h[0] = ( 1 - lambdaX ) * ( 1 - lambdaY ) * ( 1 - lambdaZ );
128 h[1] = ( lambdaX ) * ( 1 - lambdaY ) * ( 1 - lambdaZ );
129 h[2] = ( 1 - lambdaX ) * ( lambdaY ) * ( 1 - lambdaZ );
130 h[3] = ( lambdaX ) * ( lambdaY ) * ( 1 - lambdaZ );
131 h[4] = ( 1 - lambdaX ) * ( 1 - lambdaY ) * ( lambdaZ );
132 h[5] = ( lambdaX ) * ( 1 - lambdaY ) * ( lambdaZ );
133 h[6] = ( 1 - lambdaX ) * ( lambdaY ) * ( lambdaZ );
134 h[7] = ( lambdaX ) * ( lambdaY ) * ( lambdaZ );
137 for(
size_t i = 0; i < 8; ++i )
148 boost::shared_ptr< WGridRegular3D > grid = boost::shared_dynamic_cast<
WGridRegular3D >(
m_grid );
149 size_t id = x + y * grid->
getNbCoordsX() + z * grid->getNbCoordsX() * grid->getNbCoordsY();