6 #include <vapor/common.h>
81 const double extents[6],
82 const bool periodic[3],
102 const double extents[6],
103 const bool periodic[3],
124 float &AccessIJK(
size_t i,
size_t j,
size_t k)
const;
147 virtual float GetValue(
double x,
double y,
double z)
const;
164 virtual void GetUserExtents(
double extents[6])
const;
181 virtual void GetBoundingBox(
182 const size_t min[3],
const size_t max[3],
double extents[6]
184 virtual void GetBoundingBox(
185 const std::vector <size_t> &min,
const std::vector <size_t> &max,
186 std::vector <double> &minu, std::vector <double> &maxu
206 virtual void GetEnclosingRegion(
207 const double minu[3],
const double maxu[3],
size_t min[3],
size_t max[3]
220 min[0] = min[1] = min[2] = 0;
221 max[0] = _max[0]-_min[0]; max[1] = _max[1]-_min[1]; max[2] = _max[2]-_min[2];
232 min[0] = _minabs[0]; min[1] = _minabs[1]; min[2] = _minabs[2];
241 void GetDimensions(
size_t dims[3])
const;
259 _missingValue = missing_value; _hasMissing =
true;
292 virtual void SetInterpolationOrder(
int order);
312 virtual int GetUserCoordinates(
313 size_t i,
size_t j,
size_t k,
314 double *x,
double *y,
double *z
332 void getBilinearWeights(
double x,
double y,
double z,
333 double &iwgt,
double &jwgt)
const;
353 double bilinearElevation(
size_t i0,
size_t i1,
size_t j0,
size_t j1,
354 size_t k0,
double iwgt,
double jwgt)
const;
373 double bilinearInterpolation(
size_t i0,
size_t i1,
size_t j0,
size_t j1,
374 size_t k0,
double iwgt,
double jwgt)
const;
395 double quadraticInterpolation(
double x,
double y,
double z)
const;
408 double verticalLinearInterpolation(
double x,
double y,
double z)
const;
425 virtual void GetIJKIndex(
426 double x,
double y,
double z,
427 size_t *i,
size_t *j,
size_t *k
452 virtual void GetIJKIndexFloor(
453 double x,
double y,
double z,
454 size_t *i,
size_t *j,
size_t *k
465 virtual void GetRange(
float range[2])
const;
487 const bool periodic[3]
502 virtual bool InsideGrid(
double x,
double y,
double z)
const;
514 virtual void HasPeriodic(
bool *idim,
bool *jdim,
bool *kdim)
const {
515 *idim = _periodic[0]; *jdim = _periodic[1]; *kdim = _periodic[2];
527 _periodic[0] = periodic[0];
528 _periodic[1] = periodic[1];
529 _periodic[2] = periodic[2];
533 bs[0] = _bs[0]; bs[1] = _bs[1]; bs[2] = _bs[2];
548 *x = _delta[0]; *y = _delta[1]; *z = _delta[2];
558 for (
int i=0; i<3; i++)
if (_min[i]!=_max[i]) rank++;
563 size_t ,
double ,
double ,
double )
const
593 bool operator==(
const Iterator &other);
594 bool operator!=(
const Iterator &other);
597 double *x,
double *y,
double *z
598 )
const {
return(_rg->GetUserCoordinates(
599 _x - _rg->_min[0], _y - _rg->_min[1], _z - _rg->_min[2], x,y,z));
631 double *x,
double *y,
double *z
632 )
const {
return(_rg->GetUserCoordinates(
633 _x - _rg->_min[0], _y - _rg->_min[1], _z - _rg->_min[2], x,y,z));
659 float &_AccessIJK(
float **blks,
size_t i,
size_t j,
size_t k)
const;
660 void _ClampCoord(
double &x,
double &y,
double &z)
const;
661 void _SetExtents(
const double extents[6]);
676 int _interpolationOrder;
677 size_t _x, _y, _z, _xb;
684 const size_t bs[3],
const size_t min[3],
const size_t max[3],
685 const double extents[6],
const bool periodic[3],
float ** blks
687 float _GetValueNearestNeighbor(
double x,
double y,
double z)
const;
688 float _GetValueLinear(
double x,
double y,
double z)
const;
bool HasMissingData() const
virtual void GetIJKOrigin(size_t min[3]) const
virtual void HasPeriodic(bool *idim, bool *jdim, bool *kdim) const
virtual void GetIJKMinMax(size_t min[3], size_t max[3]) const
ConstIterator end() const
virtual void GetMinCellExtents(double *x, double *y, double *z) const
void GetBlockSize(size_t bs[3]) const
void SetMissingValue(float missing_value)
size_t GetNumBlks() const
int GetUserCoordinates(double *x, double *y, double *z) const
virtual double _interpolateVaryingCoord(size_t, size_t, size_t, double, double, double) const
float GetMissingValue() const
ConstIterator begin() const
virtual int GetInterpolationOrder() const
int GetUserCoordinates(double *x, double *y, double *z) const
virtual void SetPeriodic(const bool periodic[3])