OpenVDB  3.0.0
Classes | Namespaces | Typedefs | Enumerations | Functions
PointPartitioner.h File Reference

Multi-threaded space-partitioning scheme for points. More...

#include <openvdb/Types.h>
#include <openvdb/math/Transform.h>
#include <vector>
#include <deque>
#include <algorithm>
#include <boost/scoped_array.hpp>
#include <boost/integer.hpp>
#include <boost/math/special_functions/fpclassify.hpp>
#include <tbb/atomic.h>
#include <tbb/blocked_range.h>
#include <tbb/parallel_for.h>
#include <tbb/parallel_reduce.h>
#include <tbb/parallel_sort.h>
#include <tbb/task_group.h>
#include <tbb/task_scheduler_init.h>

Go to the source code of this file.

Classes

class  PointPartitioner< PointIndexT, Log2Dim >
 Partitions points into Log2Dim aligned buckets. More...
 
class  PointPartitioner< PointIndexT, Log2Dim >::IndexIterator
 
struct  ComputeBBoxOp< PointArray >
 
struct  IndexPair< IndexT >
 
struct  BucketAndVoxelOffsetOp< PointArray, IndexT, VoxelOffsetT >
 
struct  ComputeOffsetOp< PointArray, IndexT, VoxelOffsetT >
 
struct  BucketMapOp< IndexT >
 
struct  MergeOffsetsOp< IndexT >
 
struct  BucketOrderOp< IndexT >
 
struct  PageOrderOp< IndexT >
 
struct  PageBreakOp< IndexT >
 
struct  VoxelOrderOp< IndexT, Log2Dim >
 
struct  IndexOrderOp< IndexT >
 
struct  LeafNodeOriginOp< PointArray, IndexT >
 

Namespaces

 openvdb
 
 openvdb::v3_0_0
 
 openvdb::v3_0_0::tools
 
 openvdb::v3_0_0::tools::point_partitioner_internal
 

Typedefs

typedef PointPartitioner< uint32_t, 3 > UInt32PointPartitioner
 

Enumerations

enum  { LEAF_NODE_LIMIT = 1000000000 }
 

Functions

template<typename IntType >
bool isVolumeCalculationOverflowSafe (const CoordBBox &bbox)
 
template<typename PointArray >
CoordBBox computeLeafBounds (const PointArray &points, const math::Transform &m, unsigned log2dim)
 
template<Index Log2Dim, typename IndexT , typename VoxelOffsetT , typename PointArray >
void partition (const PointArray &points, const math::Transform &xform, const CoordBBox &bbox, boost::scoped_array< IndexT > &pointIndices, boost::scoped_array< IndexT > &pageOffsets, IndexT &pageCount, boost::scoped_array< VoxelOffsetT > &voxelOffsets, bool recordVoxelOffsets)
 
template<Index Log2Dim, typename IndexT , typename VoxelOffsetT , typename PointArray >
void sortPartition (const PointArray &points, const math::Transform &xform, const CoordBBox &bbox, boost::scoped_array< IndexT > &pointIndices, boost::scoped_array< IndexT > &pageOffsets, IndexT &pageCount, boost::scoped_array< VoxelOffsetT > &voxelOffsets, bool recordVoxelOffsets)
 

Detailed Description

Multi-threaded space-partitioning scheme for points.

Note
This tool is deterministic; partitioning the same point sequence will produce the same result each time. The actual points are never stored in the tool, only offsets into an external array.
Author
Mihai Alden