VTK-m  2.3
Classes | Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
vtkm::exec::CellLocatorUniformBins< CellStructureType > Class Template Reference

Structure for locating cells. More...

#include <CellLocatorUniformBins.h>

Classes

struct  LastCell
 Structure capturing the location of a cell in the search structure. More...
 

Public Member Functions

template<typename CellSetType >
 CellLocatorUniformBins (const vtkm::Id3 &cellDims, const vtkm::Vec3f &origin, const vtkm::Vec3f &maxPoint, const vtkm::Vec3f &invSpacing, const vtkm::Id3 &maxCellIds, const vtkm::cont::ArrayHandleGroupVecVariable< CellIdArrayType, CellIdOffsetArrayType > &cellIds, const CellSetType &cellSet, const vtkm::cont::CoordinateSystem &coords, vtkm::cont::DeviceAdapterId device, vtkm::cont::Token &token)
 
vtkm::ErrorCode FindCell (const vtkm::Vec3f &point, vtkm::Id &cellId, vtkm::Vec3f &parametric) const
 Locate the cell containing the provided point. More...
 
vtkm::ErrorCode FindCell (const vtkm::Vec3f &point, vtkm::Id &cellId, vtkm::Vec3f &parametric, LastCell &lastCell) const
 Locate the cell containing the provided point. More...
 
CellLocatorUniformBinsoperator-> ()
 
const CellLocatorUniformBinsoperator-> () const
 

Private Types

template<typename T >
using ReadPortal = typename vtkm::cont::ArrayHandle< T >::ReadPortalType
 
using CoordsPortalType = typename vtkm::cont::CoordinateSystem::MultiplexerArrayType::ReadPortalType
 
using CellIdArrayType = vtkm::cont::ArrayHandle< vtkm::Id >
 
using CellIdOffsetArrayType = vtkm::cont::ArrayHandle< vtkm::Id >
 
using CellIdReadPortal = typename vtkm::cont::ArrayHandleGroupVecVariable< CellIdArrayType, CellIdOffsetArrayType >::ReadPortalType
 

Private Member Functions

vtkm::Id FindBinIdx (const vtkm::Vec3f &point) const
 
bool LastCellValid (const LastCell &lastCell) const
 
bool IsInside (const vtkm::Vec3f &point) const
 
vtkm::ErrorCode FindCellImpl (const vtkm::Vec3f &point, vtkm::Id &cellId, vtkm::Vec3f &parametric, LastCell &lastCell, vtkm::Id ptBinIdx=-1) const
 
template<typename PointsVecType >
vtkm::Bounds ComputeCellBounds (const PointsVecType &points) const
 
template<typename CellShapeTag , typename CoordsType >
vtkm::ErrorCode PointInsideCell (vtkm::Vec3f point, CellShapeTag cellShape, CoordsType cellPoints, vtkm::Vec3f &parametricCoordinates, bool &inside) const
 
bool PointInBin (const vtkm::Vec3f &point, const vtkm::Id &binIdx, vtkm::Id &cellId, vtkm::Vec3f &parametric, const vtkm::Id &skipCellId=-1) const
 
bool PointInCell (const vtkm::Vec3f &point, const vtkm::Id &cid, vtkm::Vec3f &parametric) const
 

Private Attributes

vtkm::Id3 CellDims
 
vtkm::Vec3f Origin
 
vtkm::Vec3f MaxPoint
 
vtkm::Vec3f InvSpacing
 
vtkm::Id3 MaxCellIds
 
CellIdReadPortal CellIds
 
CellStructureType CellSet
 
CoordsPortalType Coords
 

Detailed Description

template<typename CellStructureType>
class vtkm::exec::CellLocatorUniformBins< CellStructureType >

Structure for locating cells.

Use the FindCell() method to identify which cell contains a point in space. The FindCell() method optionally takes a LastCell object, which is a structure nested in this class. The LastCell object can help speed locating cells for successive finds at nearby points.

This class is provided by vtkm::cont::CellLocatorBoundingIntervalHierarchy when passed to a worklet.

Member Typedef Documentation

◆ CellIdArrayType

template<typename CellStructureType >
using vtkm::exec::CellLocatorUniformBins< CellStructureType >::CellIdArrayType = vtkm::cont::ArrayHandle<vtkm::Id>
private

◆ CellIdOffsetArrayType

template<typename CellStructureType >
using vtkm::exec::CellLocatorUniformBins< CellStructureType >::CellIdOffsetArrayType = vtkm::cont::ArrayHandle<vtkm::Id>
private

◆ CellIdReadPortal

template<typename CellStructureType >
using vtkm::exec::CellLocatorUniformBins< CellStructureType >::CellIdReadPortal = typename vtkm::cont::ArrayHandleGroupVecVariable<CellIdArrayType, CellIdOffsetArrayType>::ReadPortalType
private

◆ CoordsPortalType

template<typename CellStructureType >
using vtkm::exec::CellLocatorUniformBins< CellStructureType >::CoordsPortalType = typename vtkm::cont::CoordinateSystem::MultiplexerArrayType::ReadPortalType
private

◆ ReadPortal

template<typename CellStructureType >
template<typename T >
using vtkm::exec::CellLocatorUniformBins< CellStructureType >::ReadPortal = typename vtkm::cont::ArrayHandle<T>::ReadPortalType
private

Constructor & Destructor Documentation

◆ CellLocatorUniformBins()

template<typename CellStructureType >
template<typename CellSetType >
vtkm::exec::CellLocatorUniformBins< CellStructureType >::CellLocatorUniformBins ( const vtkm::Id3 cellDims,
const vtkm::Vec3f origin,
const vtkm::Vec3f maxPoint,
const vtkm::Vec3f invSpacing,
const vtkm::Id3 maxCellIds,
const vtkm::cont::ArrayHandleGroupVecVariable< CellIdArrayType, CellIdOffsetArrayType > &  cellIds,
const CellSetType &  cellSet,
const vtkm::cont::CoordinateSystem coords,
vtkm::cont::DeviceAdapterId  device,
vtkm::cont::Token token 
)
inline

Member Function Documentation

◆ ComputeCellBounds()

template<typename CellStructureType >
template<typename PointsVecType >
vtkm::Bounds vtkm::exec::CellLocatorUniformBins< CellStructureType >::ComputeCellBounds ( const PointsVecType &  points) const
inlineprivate

◆ FindBinIdx()

template<typename CellStructureType >
vtkm::Id vtkm::exec::CellLocatorUniformBins< CellStructureType >::FindBinIdx ( const vtkm::Vec3f point) const
inlineprivate

◆ FindCell() [1/2]

template<typename CellStructureType >
vtkm::ErrorCode vtkm::exec::CellLocatorUniformBins< CellStructureType >::FindCell ( const vtkm::Vec3f point,
vtkm::Id cellId,
vtkm::Vec3f parametric 
) const
inline

Locate the cell containing the provided point.

Given the point coordinate point, this method determines which cell contains that point. The identification of the cell is returned in the cellId reference parameter. The method also determines the cell's parametric coordinates to the point and returns that in the parametric reference parameter. This result can be used in functions like vtkm::exec::CellInterpolate().

FindCell() takes an optional LastCell parameter. This parameter captures the location of the found cell and can be passed to the next call of FindCell(). If the subsequent FindCell() call is for a point that is in or near the same cell, the operation may go faster.

This method will return vtkm::ErrorCode::Success if a cell is found. If a cell is not found, vtkm::ErrorCode::CellNotFound is returned and cellId is set to -1.

◆ FindCell() [2/2]

template<typename CellStructureType >
vtkm::ErrorCode vtkm::exec::CellLocatorUniformBins< CellStructureType >::FindCell ( const vtkm::Vec3f point,
vtkm::Id cellId,
vtkm::Vec3f parametric,
LastCell lastCell 
) const
inline

Locate the cell containing the provided point.

Given the point coordinate point, this method determines which cell contains that point. The identification of the cell is returned in the cellId reference parameter. The method also determines the cell's parametric coordinates to the point and returns that in the parametric reference parameter. This result can be used in functions like vtkm::exec::CellInterpolate().

FindCell() takes an optional LastCell parameter. This parameter captures the location of the found cell and can be passed to the next call of FindCell(). If the subsequent FindCell() call is for a point that is in or near the same cell, the operation may go faster.

This method will return vtkm::ErrorCode::Success if a cell is found. If a cell is not found, vtkm::ErrorCode::CellNotFound is returned and cellId is set to -1.

◆ FindCellImpl()

template<typename CellStructureType >
vtkm::ErrorCode vtkm::exec::CellLocatorUniformBins< CellStructureType >::FindCellImpl ( const vtkm::Vec3f point,
vtkm::Id cellId,
vtkm::Vec3f parametric,
LastCell lastCell,
vtkm::Id  ptBinIdx = -1 
) const
inlineprivate

◆ IsInside()

template<typename CellStructureType >
bool vtkm::exec::CellLocatorUniformBins< CellStructureType >::IsInside ( const vtkm::Vec3f point) const
inlineprivate

◆ LastCellValid()

template<typename CellStructureType >
bool vtkm::exec::CellLocatorUniformBins< CellStructureType >::LastCellValid ( const LastCell lastCell) const
inlineprivate

◆ operator->() [1/2]

template<typename CellStructureType >
CellLocatorUniformBins* vtkm::exec::CellLocatorUniformBins< CellStructureType >::operator-> ( )
inline

◆ operator->() [2/2]

template<typename CellStructureType >
const CellLocatorUniformBins* vtkm::exec::CellLocatorUniformBins< CellStructureType >::operator-> ( ) const
inline

◆ PointInBin()

template<typename CellStructureType >
bool vtkm::exec::CellLocatorUniformBins< CellStructureType >::PointInBin ( const vtkm::Vec3f point,
const vtkm::Id binIdx,
vtkm::Id cellId,
vtkm::Vec3f parametric,
const vtkm::Id skipCellId = -1 
) const
inlineprivate

◆ PointInCell()

template<typename CellStructureType >
bool vtkm::exec::CellLocatorUniformBins< CellStructureType >::PointInCell ( const vtkm::Vec3f point,
const vtkm::Id cid,
vtkm::Vec3f parametric 
) const
inlineprivate

◆ PointInsideCell()

template<typename CellStructureType >
template<typename CellShapeTag , typename CoordsType >
vtkm::ErrorCode vtkm::exec::CellLocatorUniformBins< CellStructureType >::PointInsideCell ( vtkm::Vec3f  point,
CellShapeTag  cellShape,
CoordsType  cellPoints,
vtkm::Vec3f parametricCoordinates,
bool &  inside 
) const
inlineprivate

Member Data Documentation

◆ CellDims

template<typename CellStructureType >
vtkm::Id3 vtkm::exec::CellLocatorUniformBins< CellStructureType >::CellDims
private

◆ CellIds

template<typename CellStructureType >
CellIdReadPortal vtkm::exec::CellLocatorUniformBins< CellStructureType >::CellIds
private

◆ CellSet

template<typename CellStructureType >
CellStructureType vtkm::exec::CellLocatorUniformBins< CellStructureType >::CellSet
private

◆ Coords

template<typename CellStructureType >
CoordsPortalType vtkm::exec::CellLocatorUniformBins< CellStructureType >::Coords
private

◆ InvSpacing

template<typename CellStructureType >
vtkm::Vec3f vtkm::exec::CellLocatorUniformBins< CellStructureType >::InvSpacing
private

◆ MaxCellIds

template<typename CellStructureType >
vtkm::Id3 vtkm::exec::CellLocatorUniformBins< CellStructureType >::MaxCellIds
private

◆ MaxPoint

template<typename CellStructureType >
vtkm::Vec3f vtkm::exec::CellLocatorUniformBins< CellStructureType >::MaxPoint
private

◆ Origin

template<typename CellStructureType >
vtkm::Vec3f vtkm::exec::CellLocatorUniformBins< CellStructureType >::Origin
private

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