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 >:

## 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< ValueType > | gradient () 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 ValueType & | getValue (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 Coord & | getCenterCoord () const
| Return the coordinates of the center point of the stencil.
__hostdev__ const ValueType & | getCenterValue () 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 GridType & | grid () const
| Return a const reference to the grid from which this stencil was constructed.
__hostdev__ const AccessorType & | accessor () 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 GridType * | mGrid
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
| inline inherited

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
| inline inherited

Return the coordinates of the center point of the stencil.

## ◆ getCenterValue()

__hostdev__ const ValueType & getCenterValue | ( |  | ) | const
| inline inherited

Return the value at the center of the stencil.

## ◆ getValue()

__hostdev__ const ValueType & getValue | ( | unsigned int | pos = 0 | ) | const
| inline inherited

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
| inline inherited

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

## ◆ intersectionMask()

__hostdev__ Mask intersectionMask | ( | ValueType | isoValue = ValueType(0) | ) | const
| inline inherited

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
| inline inherited

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
| inline inherited

Return the largest value in the stencil buffer.

## ◆ mean()

__hostdev__ ValueType mean | ( |  | ) | const
| inline inherited

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
| inline inherited

Return the smallest value in the stencil buffer.

## ◆ moveTo()

__hostdev__ void moveTo | ( | const Coord & | ijk | ) |
| inline inherited

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

Parameters

  ijk | Index 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 | ) |
| inline inherited

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

## ◆ size()

__hostdev__ int size | ( |  | ) |
| inline static inherited

Return the size of the stencil buffer.

## Friends And Related Symbol Documentation

## ◆ BaseStencil

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

friend class BaseStencil
| friend

## Member Data Documentation

## ◆ mCenter

Coord mCenter
| protected inherited

## ◆ mGrid

const GridType* mGrid
| protected inherited

## ◆ SIZE

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

int SIZE = 19
| static constexpr