OpenVDB 11.0.0

Loading...
Searching...
No Matches
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.
__hostdev__ | DDA (const RayT &ray)
| ctor from ray and dimension at which the DDA marches
__hostdev__ void | init (const RayT &ray, RealT startTime, RealT maxTime)
| Re-initializes the DDA.
__hostdev__ void | init (const RayT &ray)
| Simular to init above except it uses the bounds of the input ray.
__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.
__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.
__hostdev__ RealType | time () const
| Return the time (parameterized along the Ray) of the first hit of a tree node of size 2^Log2Dim.
__hostdev__ RealType | maxTime () const
| Return the maximum time (parameterized along the Ray).
__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.
__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

## ◆ CoordType

template<typename RayT , typename CoordT = Coord, int Dim = 1>

using CoordType = CoordT

## ◆ RealT

template<typename RayT , typename CoordT = Coord, int Dim = 1>

using RealT = RealType

## ◆ RealType

template<typename RayT , typename CoordT = Coord, int Dim = 1>

using RealType = typename RayT::RealType

## ◆ Vec3T

template<typename RayT , typename CoordT = Coord, int Dim = 1>

using Vec3T = Vec3Type

## ◆ Vec3Type

template<typename RayT , typename CoordT = Coord, int Dim = 1>

using Vec3Type = typename RayT::Vec3Type

## Constructor & Destructor Documentation

## ◆ DDA() [1/2]

template<typename RayT , typename CoordT = Coord, int Dim = 1>

DDA | ( |  | ) |
| default

Default ctor.

## ◆ DDA() [2/2]

template<typename RayT , typename CoordT = Coord, int Dim = 1>

__hostdev__ DDA | ( | const RayT & | ray | ) |
| inline

ctor from ray and dimension at which the DDA marches

## Member Function Documentation

## ◆ init() [1/2]

template<typename RayT , typename CoordT = Coord, int Dim = 1>

__hostdev__ void init | ( | const RayT & | ray | ) |
| inline

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

## ◆ init() [2/2]

template<typename RayT , typename CoordT = Coord, int Dim = 1>

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

Re-initializes the DDA.

## ◆ maxTime()

template<typename RayT , typename CoordT = Coord, int Dim = 1>

__hostdev__ RealType maxTime | ( |  | ) | const
| inline

Return the maximum time (parameterized along the Ray).

## ◆ next()

template<typename RayT , typename CoordT = Coord, int Dim = 1>

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

## ◆ nextAxis()

template<typename RayT , typename CoordT = Coord, int Dim = 1>

__hostdev__ int nextAxis | ( |  | ) | const
| inline

## ◆ step()

template<typename RayT , typename CoordT = Coord, int Dim = 1>

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

## ◆ time()

template<typename RayT , typename CoordT = Coord, int Dim = 1>

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

## ◆ voxel()

template<typename RayT , typename CoordT = Coord, int Dim = 1>

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