OpenVDB: PointPartitioner.h File Reference

OpenVDB 5.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::v5_1
| openvdb::v5_1::tools
| openvdb::v5_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