HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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 <hboost/integer.hpp>
#include <hboost/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>
+ Include dependency graph for PointPartitioner.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

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

Namespaces

 openvdb
 
 openvdb::OPENVDB_VERSION_NAME
 
 openvdb::OPENVDB_VERSION_NAME::tools
 
 openvdb::OPENVDB_VERSION_NAME::tools::point_partitioner_internal
 

Typedefs

using openvdb::OPENVDB_VERSION_NAME::tools::UInt32PointPartitioner = PointPartitioner< uint32_t, 3 >
 

Functions

template<typename PointIndexType , typename VoxelOffsetType , typename PointArray >
void openvdb::OPENVDB_VERSION_NAME::tools::point_partitioner_internal::binAndSegment (const PointArray &points, const math::Transform &xform, hboost::scoped_array< typename Array< PointIndexType >::Ptr > &indexSegments, hboost::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 openvdb::OPENVDB_VERSION_NAME::tools::point_partitioner_internal::partition (const PointArray &points, const math::Transform &xform, const Index bucketLog2Dim, hboost::scoped_array< PointIndexType > &pointIndices, hboost::scoped_array< PointIndexType > &pageOffsets, PointIndexType &pageCount, hboost::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

Definition in file PointPartitioner.h.