OpenVDB  9.0.1
Public Types | Public Member Functions | List of all members
DDA< RayT, CoordT, Dim > Class Template Reference

A Digital Differential Analyzer. Unlike HDDA (defined above) this DDA uses a fixed step-size defined by the template parameter Dim! More...

#include <nanovdb/util/HDDA.h>

Public Types

using RealType = typename RayT::RealType
 
using RealT = RealType
 
using Vec3Type = typename RayT::Vec3Type
 
using Vec3T = Vec3Type
 
using CoordType = CoordT
 

Public Member Functions

 DDA ()=default
 Default ctor. More...
 
__hostdev__ DDA (const RayT &ray)
 ctor from ray and dimension at which the DDA marches More...
 
__hostdev__ void init (const RayT &ray, RealT startTime, RealT maxTime)
 Re-initializes the DDA. More...
 
__hostdev__ void init (const RayT &ray)
 Simular to init above except it uses the bounds of the input ray. More...
 
__hostdev__ bool step ()
 Increment the voxel index to next intersected voxel or node and returns true if the step in time does not exceed maxTime. More...
 
__hostdev__ const CoordT & voxel () const
 Return the index coordinates of the next node or voxel intersected by the ray. If Log2Dim = 0 the return value is the actual signed coordinate of the voxel, else it is the origin of the corresponding VDB tree node or tile. More...
 
__hostdev__ RealType time () const
 Return the time (parameterized along the Ray) of the first hit of a tree node of size 2^Log2Dim. More...
 
__hostdev__ RealType maxTime () const
 Return the maximum time (parameterized along the Ray). More...
 
__hostdev__ RealType next () const
 Return the time (parameterized along the Ray) of the second (i.e. next) hit of a tree node of size 2^Log2Dim. More...
 
__hostdev__ int nextAxis () const
 

Detailed Description

template<typename RayT, typename CoordT = Coord, int Dim = 1>
class nanovdb::DDA< RayT, CoordT, Dim >

A Digital Differential Analyzer. Unlike HDDA (defined above) this DDA uses a fixed step-size defined by the template parameter Dim!

Note
The Ray template class is expected to have the following methods: test(time), t0(), t1(), invDir(), and operator()(time). See the example Ray class above for their definition.

Member Typedef Documentation

using CoordType = CoordT
using RealT = RealType
using RealType = typename RayT::RealType
using Vec3T = Vec3Type
using Vec3Type = typename RayT::Vec3Type

Constructor & Destructor Documentation

DDA ( )
default

Default ctor.

__hostdev__ DDA ( const RayT &  ray)
inline

ctor from ray and dimension at which the DDA marches

Member Function Documentation

__hostdev__ void init ( const RayT &  ray,
RealT  startTime,
RealT  maxTime 
)
inline

Re-initializes the DDA.

__hostdev__ void init ( const RayT &  ray)
inline

Simular to init above except it uses the bounds of the input ray.

__hostdev__ RealType maxTime ( ) const
inline

Return the maximum time (parameterized along the Ray).

__hostdev__ RealType next ( ) const
inline

Return the time (parameterized along the Ray) of the second (i.e. next) hit of a tree node of size 2^Log2Dim.

Note
Incurs a (small) computational overhead.
__hostdev__ int nextAxis ( ) const
inline
__hostdev__ bool step ( )
inline

Increment the voxel index to next intersected voxel or node and returns true if the step in time does not exceed maxTime.

__hostdev__ RealType time ( ) const
inline

Return the time (parameterized along the Ray) of the first hit of a tree node of size 2^Log2Dim.

This value is initialized to startTime or ray.t0() depending on the constructor used.

Note
Incurs no computational overhead.
__hostdev__ const CoordT& voxel ( ) const
inline

Return the index coordinates of the next node or voxel intersected by the ray. If Log2Dim = 0 the return value is the actual signed coordinate of the voxel, else it is the origin of the corresponding VDB tree node or tile.

Note
Incurs no computational overhead.