OpenVDB 11.0.0
Loading...
Searching...
No Matches
CurvatureStencil< GridT, RealT > Class Template Reference

#include <nanovdb/util/Stencils.h>

Inheritance diagram for CurvatureStencil< GridT, RealT >:
BaseStencil< CurvatureStencil< GridT >, 19, GridT >

Public Types

using GridType = GridT
using TreeType = typename GridT::TreeType
using ValueType = typename GridT::ValueType
using AccessorType

Public Member Functions

__hostdev__ CurvatureStencil (const GridType &grid)
__hostdev__ CurvatureStencil (const GridType &grid, double dx)
__hostdev__ ValueType meanCurvature () const
 Return the mean curvature at the previously buffered location.
__hostdev__ ValueType gaussianCurvature () const
 Return the Gaussian curvature at the previously buffered location.
__hostdev__ void curvatures (ValueType &mean, ValueType &gauss) const
 Return both the mean and the Gaussian curvature at the previously buffered location.
__hostdev__ ValueType meanCurvatureNormGrad () const
__hostdev__ ValueType gaussianCurvatureNormGrad () const
__hostdev__ void curvaturesNormGrad (ValueType &mean, ValueType &gauss) const
 Return both the mean and the Gaussian curvature at the previously buffered location.
__hostdev__ void principalCurvatures (ValueType &min, ValueType &max) const
 Computes the minimum and maximum principal curvature at the previously buffered location.
__hostdev__ ValueType laplacian () const
__hostdev__ Vec3< ValueTypegradient () const
template<int i, int j, int k>
__hostdev__ unsigned int pos () const
 Return linear offset for the specified stencil point relative to its center.
__hostdev__ void moveTo (const Coord &ijk)
 Initialize the stencil buffer with the values of voxel (i, j, k) and its neighbors.
__hostdev__ const ValueTypegetValue (unsigned int pos=0) const
 Return the value from the stencil buffer with linear offset pos.
__hostdev__ void setValue (const ValueType &value)
 Set the value at the specified location relative to the center of the stencil.
__hostdev__ ValueType mean () const
 Return the mean value of the current stencil.
__hostdev__ ValueType min () const
 Return the smallest value in the stencil buffer.
__hostdev__ ValueType max () const
 Return the largest value in the stencil buffer.
__hostdev__ const CoordgetCenterCoord () const
 Return the coordinates of the center point of the stencil.
__hostdev__ const ValueTypegetCenterValue () const
 Return the value at the center of the stencil.
__hostdev__ bool intersects (const ValueType &isoValue=ValueType(0)) const
 Return true if the center of the stencil intersects the iso-contour specified by the isoValue.
__hostdev__ Mask intersectionMask (ValueType isoValue=ValueType(0)) const
 Return true a bit-mask where the 6 lower bits indicates if the center of the stencil intersects the iso-contour specified by the isoValue.
__hostdev__ const GridTypegrid () const
 Return a const reference to the grid from which this stencil was constructed.
__hostdev__ const AccessorTypeaccessor () const
 Return a const reference to the ValueAccessor associated with this Stencil.

Static Public Member Functions

static __hostdev__ int size ()
 Return the size of the stencil buffer.

Static Public Attributes

static constexpr int SIZE = 19

Protected Attributes

const GridTypemGrid
Coord mCenter

Friends

template<typename, int, typename>
class BaseStencil

Member Typedef Documentation

◆ AccessorType

using AccessorType
inherited

◆ GridType

template<typename GridT, typename RealT = typename GridT::ValueType>
using GridType = GridT

◆ TreeType

template<typename GridT, typename RealT = typename GridT::ValueType>
using TreeType = typename GridT::TreeType

◆ ValueType

template<typename GridT, typename RealT = typename GridT::ValueType>
using ValueType = typename GridT::ValueType

Constructor & Destructor Documentation

◆ CurvatureStencil() [1/2]

template<typename GridT, typename RealT = typename GridT::ValueType>
__hostdev__ CurvatureStencil ( const GridType & grid)
inline

◆ CurvatureStencil() [2/2]

template<typename GridT, typename RealT = typename GridT::ValueType>
__hostdev__ CurvatureStencil ( const GridType & grid,
double dx )
inline

Member Function Documentation

◆ accessor()

__hostdev__ const AccessorType & accessor ( ) const
inlineinherited

Return a const reference to the ValueAccessor associated with this Stencil.

◆ curvatures()

template<typename GridT, typename RealT = typename GridT::ValueType>
__hostdev__ void curvatures ( ValueType & mean,
ValueType & gauss ) const
inline

Return both the mean and the Gaussian curvature at the previously buffered location.

Note
This method should not be called until the stencil buffer has been populated via a call to moveTo(ijk).

◆ curvaturesNormGrad()

template<typename GridT, typename RealT = typename GridT::ValueType>
__hostdev__ void curvaturesNormGrad ( ValueType & mean,
ValueType & gauss ) const
inline

Return both the mean and the Gaussian curvature at the previously buffered location.

Note
This method should not be called until the stencil buffer has been populated via a call to moveTo(ijk).

◆ gaussianCurvature()

template<typename GridT, typename RealT = typename GridT::ValueType>
__hostdev__ ValueType gaussianCurvature ( ) const
inline

Return the Gaussian curvature at the previously buffered location.

Note
This method should not be called until the stencil buffer has been populated via a call to moveTo(ijk).

◆ gaussianCurvatureNormGrad()

template<typename GridT, typename RealT = typename GridT::ValueType>
__hostdev__ ValueType gaussianCurvatureNormGrad ( ) const
inline

Return the mean Gaussian multiplied by the norm of the central-difference gradient.

Note
This method should not be called until the stencil buffer has been populated via a call to moveTo(ijk).

◆ getCenterCoord()

__hostdev__ const Coord & getCenterCoord ( ) const
inlineinherited

Return the coordinates of the center point of the stencil.

◆ getCenterValue()

__hostdev__ const ValueType & getCenterValue ( ) const
inlineinherited

Return the value at the center of the stencil.

◆ getValue()

__hostdev__ const ValueType & getValue ( unsigned int pos = 0) const
inlineinherited

Return the value from the stencil buffer with linear offset pos.

Note
The default (pos = 0) corresponds to the first element which is typically the center point of the stencil.

◆ gradient()

template<typename GridT, typename RealT = typename GridT::ValueType>
__hostdev__ Vec3< ValueType > gradient ( ) const
inline

Return the gradient computed at the previously buffered location by second-order central differencing.

Note
This method should not be called until the stencil buffer has been populated via a call to moveTo(ijk).

◆ grid()

__hostdev__ const GridType & grid ( ) const
inlineinherited

Return a const reference to the grid from which this stencil was constructed.

◆ intersectionMask()

__hostdev__ Mask intersectionMask ( ValueType isoValue = ValueType(0)) const
inlineinherited

Return true a bit-mask where the 6 lower bits indicates if the center of the stencil intersects the iso-contour specified by the isoValue.

Note
There are 2^6 = 64 different possible cases, including no intersections!

The ordering of bit mask is ( -x, +x, -y, +y, -z, +z ), so to check if there is an intersection in -y use (mask & (1u<<2)) where mask is ther return value from this function. To check if there are any intersections use mask!=0u, and for no intersections use mask==0u. To count the number of intersections use __builtin_popcount(mask).

◆ intersects()

__hostdev__ bool intersects ( const ValueType & isoValue = ValueType(0)) const
inlineinherited

Return true if the center of the stencil intersects the iso-contour specified by the isoValue.

◆ laplacian()

template<typename GridT, typename RealT = typename GridT::ValueType>
__hostdev__ ValueType laplacian ( ) const
inline

Return the Laplacian computed at the previously buffered location by second-order central differencing.

Note
This method should not be called until the stencil buffer has been populated via a call to moveTo(ijk).

◆ max()

__hostdev__ ValueType max ( ) const
inlineinherited

Return the largest value in the stencil buffer.

◆ mean()

__hostdev__ ValueType mean ( ) const
inlineinherited

Return the mean value of the current stencil.

◆ meanCurvature()

template<typename GridT, typename RealT = typename GridT::ValueType>
__hostdev__ ValueType meanCurvature ( ) const
inline

Return the mean curvature at the previously buffered location.

Note
This method should not be called until the stencil buffer has been populated via a call to moveTo(ijk).

◆ meanCurvatureNormGrad()

template<typename GridT, typename RealT = typename GridT::ValueType>
__hostdev__ ValueType meanCurvatureNormGrad ( ) const
inline

Return the mean curvature multiplied by the norm of the central-difference gradient. This method is very useful for mean-curvature flow of level sets!

Note
This method should not be called until the stencil buffer has been populated via a call to moveTo(ijk).

◆ min()

__hostdev__ ValueType min ( ) const
inlineinherited

Return the smallest value in the stencil buffer.

◆ moveTo()

__hostdev__ void moveTo ( const Coord & ijk)
inlineinherited

Initialize the stencil buffer with the values of voxel (i, j, k) and its neighbors.

Parameters
ijkIndex coordinates of stencil center

◆ pos()

template<typename GridT, typename RealT = typename GridT::ValueType>
template<int i, int j, int k>
__hostdev__ unsigned int pos ( ) const
inline

Return linear offset for the specified stencil point relative to its center.

◆ principalCurvatures()

template<typename GridT, typename RealT = typename GridT::ValueType>
__hostdev__ void principalCurvatures ( ValueType & min,
ValueType & max ) const
inline

Computes the minimum and maximum principal curvature at the previously buffered location.

Note
This method should not be called until the stencil buffer has been populated via a call to moveTo(ijk).

◆ setValue()

__hostdev__ void setValue ( const ValueType & value)
inlineinherited

Set the value at the specified location relative to the center of the stencil.

◆ size()

__hostdev__ int size ( )
inlinestaticinherited

Return the size of the stencil buffer.

◆ BaseStencil

template<typename GridT, typename RealT = typename GridT::ValueType>
template<typename, int, typename>
friend class BaseStencil
friend

Member Data Documentation

◆ mCenter

Coord mCenter
protectedinherited

◆ mGrid

const GridType* mGrid
protectedinherited

◆ SIZE

template<typename GridT, typename RealT = typename GridT::ValueType>
int SIZE = 19
staticconstexpr