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

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

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

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.

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

protectedinherited

## mGrid

const GridType* mGrid

protectedinherited

## SIZE

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

int SIZE = 19

staticconstexpr