OpenVDB  6.1.0
Classes | Namespaces | Typedefs | Functions
PointPartitioner.h File Reference

Spatially partitions points using a parallel radix-based sorting algorithm. More...

#include <openvdb/Types.h>
#include <openvdb/math/Transform.h>
#include <boost/integer.hpp>
#include <boost/scoped_array.hpp>
#include <tbb/blocked_range.h>
#include <tbb/parallel_for.h>
#include <tbb/task_scheduler_init.h>
#include <algorithm>
#include <cmath>
#include <deque>
#include <map>
#include <set>
#include <utility>
#include <vector>

Go to the source code of this file.

Classes

class  PointPartitioner< PointIndexType, BucketLog2Dim >
 
class  PointPartitioner< PointIndexType, BucketLog2Dim >::IndexIterator
 
struct  ComputePointOrderOp< PointIndexType >
 
struct  CreateOrderedPointIndexArrayOp< PointIndexType >
 
struct  VoxelOrderOp< PointIndexType, BucketLog2Dim >
 
struct  LeafNodeOriginOp< PointArray, PointIndexType >
 
struct  Array< T >
 
struct  MoveSegmentDataOp< PointIndexType >
 
struct  MergeBinsOp< PointIndexType >
 
struct  BinPointIndicesOp< PointArray, PointIndexType, VoxelOffsetType >
 
struct  OrderSegmentsOp< PointIndexType >
 

Namespaces

 openvdb
 
 openvdb::v6_1
 
 openvdb::v6_1::tools
 
 openvdb::v6_1::tools::point_partitioner_internal
 

Typedefs

using UInt32PointPartitioner = PointPartitioner< uint32_t, 3 >
 

Functions

template<typename PointIndexType , typename VoxelOffsetType , typename PointArray >
void binAndSegment (const PointArray &points, const math::Transform &xform, boost::scoped_array< typename Array< PointIndexType >::Ptr > &indexSegments, boost::scoped_array< typename Array< PointIndexType >::Ptr > &offsetSegments, size_t &segmentCount, const Index binLog2Dim, const Index bucketLog2Dim, VoxelOffsetType *voxelOffsets=nullptr, bool cellCenteredTransform=true)
 Segment points using one level of least significant digit radix bins. More...
 
template<typename PointIndexType , typename VoxelOffsetType , typename PointArray >
void partition (const PointArray &points, const math::Transform &xform, const Index bucketLog2Dim, boost::scoped_array< PointIndexType > &pointIndices, boost::scoped_array< PointIndexType > &pageOffsets, PointIndexType &pageCount, boost::scoped_array< VoxelOffsetType > &voxelOffsets, bool recordVoxelOffsets, bool cellCenteredTransform)
 

Detailed Description

Spatially partitions points using a parallel radix-based sorting algorithm.

Performs a stable deterministic sort; partitioning the same point sequence will produce the same result each time.

The algorithm is unbounded meaning that points may be distributed anywhere in index space.

The actual points are never stored in the tool, only offsets into an external array.

Author
Mihai Alden