IMP
2.0.0
The Integrative Modeling Platform
|
A voxel grid in d-dimensional space space. More...
#include <IMP/algebra/GridD.h>
Public Types | |
typedef EmbeddingT | Embedding |
typedef VectorD< D > | Vector |
Public Member Functions | |
GridD (const Ints counts, const BoundingBoxD< D > &bb, Value default_value=Value()) | |
GridD (double side, const BoundingBoxD< D > &bb, const Value &default_value=Value()) | |
GridD (const Storage &storage, const Embedding &embed) | |
GridD (double side, const VectorD< D > &origin, const Value &default_value=Value()) | |
GridD () | |
An empty, undefined grid. | |
GridIndexD< D > | add_voxel (const VectorD< D > &pt, const Value &vt) |
BoundingBoxD< D > | get_bounding_box () const |
ExtendedGridIndexD< D > | get_extended_index (const GridIndexD< D > &index) const |
Convert an index back to an extended index. | |
Value & | operator[] (VectorD< D >) |
const Value | operator[] (VectorD< D >) const |
void | set_bounding_box (const BoundingBoxD< D > &bb3) |
Change the bounding box but not the grid or contents. More... | |
Related Functions | |
(Note that these are not member functions.) | |
template<class Storage , class Embedding > | |
const Storage::Value | get_trilinearly_interpolated (const GridD< 3, Storage, typename Storage::Value, Embedding > &g, const Vector3D &v, const typename Storage::Value &outside=0) |
Use trilinear interpolation to compute a smoothed value at v. More... | |
Get nearest | |
If the point is in the bounding box of the grid, this is the index of the voxel containing the point, otherwise it is the closest one in the bounding box. This can only be used with bounded grids, right now. | |
GridIndexD< D > | get_nearest_index (const VectorD< D > &pt) const |
ExtendedGridIndexD< D > | get_nearest_extended_index (const VectorD< D > &pt) const |
Voxel iterators | |
These iterators go through a range of voxels in the grid. These voxels include any that touch or are contained in the shape passed to the begin/end calls. | |
VoxelIterator | voxels_begin (const BoundingBoxD< D > &bb) |
VoxelIterator | voxels_end (const BoundingBoxD< D > &bb) |
VoxelConstIterator | voxels_begin (const BoundingBoxD< D > &bb) const |
VoxelConstIterator | voxels_end (const BoundingBoxD< D > &bb) const |
Storage::IndexIterator | indexes_begin (const BoundingBoxD< D > &bb) const |
Storage::IndexIterator | indexes_end (const BoundingBoxD< D > &) const |
First some terminology:
IMP
provides support for a variety of spatial grids. The grid support in C++ is implemented by combining several different layers to specify what capabilities are desired. These layers are:
These are implemented as mix-ins, so each layer provides a set of accessible functionality as methods/types in the final class.
Iterate over the set of voxels incident on a bounding box:
IMP::algebra::GridD< D, Storage, Value, EmbeddingT >::GridD | ( | const Ints | counts, |
const BoundingBoxD< D > & | bb, | ||
Value | default_value = Value() |
||
) |
IMP::algebra::GridD< D, Storage, Value, EmbeddingT >::GridD | ( | double | side, |
const BoundingBoxD< D > & | bb, | ||
const Value & | default_value = Value() |
||
) |
IMP::algebra::GridD< D, Storage, Value, EmbeddingT >::GridD | ( | double | side, |
const VectorD< D > & | origin, | ||
const Value & | default_value = Value() |
||
) |
void IMP::algebra::GridD< D, Storage, Value, EmbeddingT >::set_bounding_box | ( | const BoundingBoxD< D > & | bb3 | ) |
|
related |
The voxel values are assumed to be at the center of the voxel and the passed outside value is used for voxels outside the grid. The type Voxel must support get_linearly_interpolated().
Definition at line 45 of file grid_utility.h.