EBGeometry
Compact, header-only C++ library for fast evaluation of signed distance functions
Loading...
Searching...
No Matches
Public Types | Static Public Member Functions | Static Public Attributes | List of all members
EBGeometry::PointCloudDetail::PointPrimitive< T, W > Struct Template Reference

The primitive of PointCloudBVH: a point, packed into PointAoSoA groups. More...

#include <EBGeometry_CloudBVH.hpp>

Public Types

using Item = Vec3T< T >
 What the source returns: a position.
 
using Group = PointAoSoA< T, W >
 The leaf group.
 
using FromArray = PointCloud::FromArray< T >
 The source reading an array of primitives.
 

Static Public Member Functions

static const Vec3T< T > & center (const Item &a_item) noexcept
 The point a primitive's Morton key is taken at.
 
static void grow (Vec3T< T > &a_lo, Vec3T< T > &a_hi, const Item &a_item) noexcept
 Grow a box to hold a primitive.
 
static void requireValid (const char *a_who, const std::vector< Item > &a_items) noexcept
 Abort with a message unless the primitives of a host array can be built over.
 
template<class Source >
static void requireValidWhereBuilt (const Source &, uint32_t, bool, Vec3T< T > *, const char *) noexcept
 Check, where the build runs, what the box of the centers does not: nothing for a point.
 

Static Public Attributes

static constexpr const char * ClassName = "PointCloudBVH"
 The class built over these primitives, for the messages.
 
static constexpr const char * Singular = "point"
 One primitive, for the messages.
 
static constexpr const char * Plural = "points"
 Primitives, for the messages.
 
static constexpr const char * MaxParameter = "a_maxPoints"
 build()'s parameter giving the room for a rebuild, for the messages.
 

Detailed Description

template<class T, size_t W>
struct EBGeometry::PointCloudDetail::PointPrimitive< T, W >

The primitive of PointCloudBVH: a point, packed into PointAoSoA groups.

Internal; not part of the public API. A cloud BVH's primitive type gives what its source returns (Item), the leaf group it is packed into (Group), the source reading an array of them (FromArray), the class built over it (ClassName), the point its Morton key is taken at (center()), how it grows a box (grow()), the check of what the center's finiteness does not cover (requireValid() on the host, and requireValidWhereBuilt() where the build runs), and the words for the messages.

Template Parameters
TFloating-point precision.
WPoints per group.

Member Function Documentation

◆ center()

template<class T , size_t W>
static const Vec3T< T > & EBGeometry::PointCloudDetail::PointPrimitive< T, W >::center ( const Item &  a_item)
inlinestaticnoexcept

The point a primitive's Morton key is taken at.

Parameters
[in]a_itemThe primitive.
Returns
Its position.

◆ grow()

template<class T , size_t W>
static void EBGeometry::PointCloudDetail::PointPrimitive< T, W >::grow ( Vec3T< T > &  a_lo,
Vec3T< T > &  a_hi,
const Item &  a_item 
)
inlinestaticnoexcept

Grow a box to hold a primitive.

Parameters
[in,out]a_loThe box's lower corner.
[in,out]a_hiThe box's upper corner.
[in]a_itemThe primitive.

◆ requireValid()

template<class T , size_t W>
static void EBGeometry::PointCloudDetail::PointPrimitive< T, W >::requireValid ( const char *  a_who,
const std::vector< Item > &  a_items 
)
inlinestaticnoexcept

Abort with a message unless the primitives of a host array can be built over.

Parameters
[in]a_whoThe calling function, for the message.
[in]a_itemsThe primitives.

◆ requireValidWhereBuilt()

template<class T , size_t W>
template<class Source >
static void EBGeometry::PointCloudDetail::PointPrimitive< T, W >::requireValidWhereBuilt ( const Source &  ,
uint32_t  ,
bool  ,
Vec3T< T > *  ,
const char *   
)
inlinestaticnoexcept

Check, where the build runs, what the box of the centers does not: nothing for a point.

Template Parameters
SourceThe primitives' source.

The documentation for this struct was generated from the following file: