HDK
|
Spatially partitions points using a parallel radix-based sorting algorithm. More...
#include <openvdb/Types.h>
#include <openvdb/math/Transform.h>
#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.
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, std::unique_ptr< typename Array< PointIndexType >::Ptr[]> &indexSegments, std::unique_ptr< typename Array< PointIndexType >::Ptr[]> &offsetSegments, std::vector< Coord > &coords, 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, std::unique_ptr< PointIndexType[]> &pointIndices, std::unique_ptr< PointIndexType[]> &pageOffsets, std::unique_ptr< Coord[]> &pageCoordinates, PointIndexType &pageCount, std::unique_ptr< VoxelOffsetType[]> &voxelOffsets, bool recordVoxelOffsets, bool cellCenteredTransform) |
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.
Definition in file PointPartitioner.h.