OpenVDB 11.0.0

Loading...
Searching...
No Matches
GradStencil< GridT > Class Template Reference

`#include <nanovdb/util/Stencils.h>`

Inheritance diagram for GradStencil< GridT >:

## Public Types
using | GridType = GridT
using | TreeType = typename GridT::TreeType
using | ValueType = typename GridT::ValueType
using | AccessorType

## Public Member Functions
__hostdev__ | GradStencil (const GridType &grid)
__hostdev__ | GradStencil (const GridType &grid, double dx)
__hostdev__ ValueType | normSqGrad () const
| Return the norm square of the single-sided upwind gradient (computed via Godunov's scheme) at the previously buffered location.
__hostdev__ Vec3< ValueType > | gradient () const
| Return the gradient computed at the previously buffered location by second order central differencing.
__hostdev__ Vec3< ValueType > | gradient (const Vec3< ValueType > &V) const
| Return the first-order upwind gradient corresponding to the direction V.
__hostdev__ ValueType | laplacian () const
__hostdev__ bool | zeroCrossing () const
__hostdev__ Vec3< ValueType > | cpt ()
| Compute the closest-point transform to a level set.
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 = 7

## Protected Attributes
const GridType * | mGrid
Coord | mCenter

## Friends
template<typename, int, typename>
class | BaseStencil

## Detailed Description

template<typename GridT>
class nanovdb::GradStencil< GridT >

This is a simple 7-point nearest neighbor stencil that supports gradient by second-order central differencing, first-order upwinding, Laplacian, closest-point transform and zero-crossing test.

Note
  For optimal random access performance this class includes its own grid accessor.

## Member Typedef Documentation

## ◆ AccessorType

using AccessorType
| inherited

## ◆ GridType

template<typename GridT>

using GridType = GridT

## ◆ TreeType

template<typename GridT>

using TreeType = typename GridT::TreeType

## ◆ ValueType

template<typename GridT>

using ValueType = typename GridT::ValueType

## Constructor & Destructor Documentation

## ◆ GradStencil() [1/2]

template<typename GridT>

__hostdev__ GradStencil | ( | const GridType & | grid | ) |
| inline

## ◆ GradStencil() [2/2]

template<typename GridT>

__hostdev__ GradStencil | ( | 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.

## ◆ cpt()

template<typename GridT>

__hostdev__ Vec3< ValueType > cpt | ( |  | ) |
| inline

Compute the closest-point transform to a level set.

Returns
  the closest point in index space to the surface from which the level set was derived.

Note
  This method assumes that the grid represents a level set with distances in world units and a simple affine transfrom with uniform scaling.

## ◆ 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() [1/2]

template<typename GridT>

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

## ◆ gradient() [2/2]

template<typename GridT>

__hostdev__ Vec3< ValueType > gradient | ( | const Vec3< ValueType > & | V | ) | const
| inline

Return the first-order upwind gradient corresponding to the direction V.

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>

__hostdev__ ValueType laplacian | ( |  | ) | const
| inline

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

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

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

## ◆ normSqGrad()

template<typename GridT>

__hostdev__ ValueType normSqGrad | ( |  | ) | const
| inline

Return the norm square of the single-sided upwind gradient (computed via Godunov's scheme) 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).

## ◆ pos()

template<typename GridT>
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.

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

## ◆ zeroCrossing()

template<typename GridT>

__hostdev__ bool zeroCrossing | ( |  | ) | const
| inline

Return `true` if the sign of the value at the center point of the stencil is different from the signs of any of its six nearest neighbors.

## Friends And Related Symbol Documentation

## ◆ BaseStencil

template<typename GridT>
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>

int SIZE = 7
| static constexpr