Loading...
Searching...
No Matches
DDA< RayT, Log2Dim > Class Template Reference

A Digital Differential Analyzer specialized for OpenVDB grids. More...

`#include <openvdb/math/DDA.h>`

## Public Types

using | RealType = typename RayT::RealType
using | RealT = RealType
using | Vec3Type = typename RayT::Vec3Type
using | Vec3T = Vec3Type

## Public Member Functions

| DDA ()
| uninitialized constructor
| DDA (const RayT &ray)
| DDA (const RayT &ray, RealT startTime)
| DDA (const RayT &ray, RealT startTime, RealT maxTime)
void | init (const RayT &ray, RealT startTime, RealT maxTime)
void | init (const RayT &ray)
void | init (const RayT &ray, RealT startTime)
bool | step ()
| Increment the voxel index to next intersected voxel or node and returns true if the step in time does not exceed maxTime.
const Coord & | 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.
RealType | time () const
| Return the time (parameterized along the Ray) of the first hit of a tree node of size 2^Log2Dim.
RealType | maxTime () const
| Return the maximum time (parameterized along the Ray).
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.
void | print (std::ostream &os=std::cout) const
| Print information about this DDA for debugging.

## Detailed Description

template<typename RayT, Index Log2Dim = 0>
class openvdb::v11_0::math::DDA< RayT, Log2Dim >

A Digital Differential Analyzer specialized for OpenVDB grids.

Note
  Conceptually similar to Bresenham's line algorithm applied to a 3D Ray intersecting OpenVDB nodes or voxels. Log2Dim = 0 corresponds to a voxel and Log2Dim a tree node of size 2^Log2Dim.
  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

## RealT

template<typename RayT, Index Log2Dim = 0>

using RealT = RealType

## RealType

template<typename RayT, Index Log2Dim = 0>

using RealType = typename RayT::RealType

## Vec3T

template<typename RayT, Index Log2Dim = 0>

using Vec3T = Vec3Type

## Vec3Type

template<typename RayT, Index Log2Dim = 0>

using Vec3Type = typename RayT::Vec3Type

## Constructor & Destructor Documentation

## DDA() [1/4]

template<typename RayT, Index Log2Dim = 0>

DDA | ( |  | ) |

inline

uninitialized constructor

## DDA() [2/4]

template<typename RayT, Index Log2Dim = 0>

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

inline

## DDA() [3/4]

template<typename RayT, Index Log2Dim = 0>

DDA | ( | const RayT & | ray,
|  | RealT | startTime )

inline

## DDA() [4/4]

template<typename RayT, Index Log2Dim = 0>

DDA | ( | const RayT & | ray,
|  | RealT | startTime,
|  | RealT | maxTime )

inline

## Member Function Documentation

## init() [1/3]

template<typename RayT, Index Log2Dim = 0>

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

inline

## init() [2/3]

template<typename RayT, Index Log2Dim = 0>

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

inline

## init() [3/3]

template<typename RayT, Index Log2Dim = 0>

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

inline

## maxTime()

template<typename RayT, Index Log2Dim = 0>

RealType maxTime | ( |  | ) | const

inline

Return the maximum time (parameterized along the Ray).

## next()

template<typename RayT, Index Log2Dim = 0>

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.

## print()

template<typename RayT, Index Log2Dim = 0>

void print | ( | std::ostream & | os = std::cout | ) | const

inline

Print information about this DDA for debugging.

Parameters

  os | a stream to which to write textual information.

## step()

template<typename RayT, Index Log2Dim = 0>

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, Index Log2Dim = 0>

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, Index Log2Dim = 0>

const Coord & 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.