Field3D
SparseField.h File Reference

Contains the SparseField class. More...

#include <vector>
#include <boost/thread/mutex.hpp>
#include <boost/lexical_cast.hpp>
#include "Field.h"
#include "SparseFile.h"
#include "ns.h"

Go to the source code of this file.

Classes

class  CubicGenericFieldInterp< Field_T >
 
class  LinearGenericFieldInterp< Field_T >
 
class  LinearSparseFieldInterp< Data_T >
 
struct  Sparse::CheckAllEqual< Data_T >
 Checks if all the values in the SparseBlock are equal. Used by SparseField::releaseBlocks(). More...
 
struct  Sparse::CheckMaxAbs< Data_T >
 Checks if all the absolute values in the SparseBlock are greater than some number. Useful for making narrow band levelsets Used by SparseField::releaseBlocks(). More...
 
class  Sparse::SparseBlock< Data_T >
 
class  SparseField< Data_T >
 This Field subclass stores voxel data in block-allocated arrays. More...
 
class  SparseField< Data_T >::block_iterator
 
class  SparseField< Data_T >::const_iterator
 
class  SparseField< Data_T >::iterator
 

Namespaces

 Sparse
 Namespace for sparse field specifics.
 

Macros

#define BLOCK_ORDER   4
 

Typedefs

typedef SparseField< V3dSparseField3d
 
typedef SparseField< V3fSparseField3f
 
typedef SparseField< V3hSparseField3h
 
typedef SparseField< double > SparseFieldd
 
typedef SparseField< float > SparseFieldf
 
typedef SparseField< halfSparseFieldh
 

Functions

template<typename Data_T >
Box3i blockCoords (const Box3i &dvsBounds, const SparseField< Data_T > *f)
 
 FIELD3D_CLASSTYPE_TEMPL_INSTANTIATION (LinearSparseFieldInterp)
 
 FIELD3D_CLASSTYPE_TEMPL_INSTANTIATION (SparseField)
 
template<typename Data_T >
bool Sparse::isAnyLess (const Data_T &left, const Data_T &right)
 
template<>
bool Sparse::isAnyLess (const V3d &left, const V3d &right)
 
template<>
bool Sparse::isAnyLess (const V3f &left, const V3f &right)
 
template<>
bool Sparse::isAnyLess (const V3h &left, const V3h &right)
 

Detailed Description

Contains the SparseField class.

Definition in file SparseField.h.

Macro Definition Documentation

◆ BLOCK_ORDER

#define BLOCK_ORDER   4

Definition at line 57 of file SparseField.h.

Typedef Documentation

◆ SparseFieldh

Definition at line 664 of file SparseField.h.

◆ SparseFieldf

typedef SparseField<float> SparseFieldf

Definition at line 665 of file SparseField.h.

◆ SparseFieldd

typedef SparseField<double> SparseFieldd

Definition at line 666 of file SparseField.h.

◆ SparseField3h

Definition at line 667 of file SparseField.h.

◆ SparseField3f

Definition at line 668 of file SparseField.h.

◆ SparseField3d

Definition at line 669 of file SparseField.h.

Function Documentation

◆ FIELD3D_CLASSTYPE_TEMPL_INSTANTIATION() [1/2]

FIELD3D_CLASSTYPE_TEMPL_INSTANTIATION ( LinearSparseFieldInterp  )

◆ FIELD3D_CLASSTYPE_TEMPL_INSTANTIATION() [2/2]

FIELD3D_CLASSTYPE_TEMPL_INSTANTIATION ( SparseField  )

◆ blockCoords()

template<typename Data_T >
Box3i blockCoords ( const Box3i dvsBounds,
const SparseField< Data_T > *  f 
)

Definition at line 676 of file SparseField.h.

677 {
678  // Check empty bbox input
679  if (!continuousBounds(dvsBounds).hasVolume()) {
680  return Box3i();
681  }
682  // Discrete offset voxel space
683  Box3i dovsBounds = dvsBounds;
684  f->applyDataWindowOffset(dovsBounds.min.x,
685  dovsBounds.min.y,
686  dovsBounds.min.z);
687  f->applyDataWindowOffset(dovsBounds.max.x,
688  dovsBounds.max.y,
689  dovsBounds.max.z);
690  // Discrete block space bounds
691  Box3i dbsBounds;
692  if (f) {
693  f->getBlockCoord(dovsBounds.min.x, dovsBounds.min.y, dovsBounds.min.z,
694  dbsBounds.min.x, dbsBounds.min.y, dbsBounds.min.z);
695  f->getBlockCoord(dovsBounds.max.x, dovsBounds.max.y, dovsBounds.max.z,
696  dbsBounds.max.x, dbsBounds.max.y, dbsBounds.max.z);
697  }
698  return dbsBounds;
699 }

References SparseField< Data_T >::applyDataWindowOffset(), continuousBounds(), and SparseField< Data_T >::getBlockCoord().

Referenced by detail::checkInputEmpty().

continuousBounds
Box3d continuousBounds(const Box3i &bbox)
Definition: Field.h:1111
SparseField::getBlockCoord
void getBlockCoord(int i, int j, int k, int &bi, int &bj, int &bk) const
Calculates the block coordinates that a given set of voxel coords are in.
Definition: SparseField.h:1890
Box3i
Imath::Box3i Box3i
Definition: SpiMathLib.h:77
SparseField::applyDataWindowOffset
void applyDataWindowOffset(int &i, int &j, int &k) const
Applies data window offset.
Definition: SparseField.h:455