Loading...
Searching...
No Matches
VolumeHDDA< TreeT, RayT, ChildNodeLevel > Class Template Reference

Helper class that implements Hierarchical Digital Differential Analyzers for ray intersections against a generic volume. More...

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

## Public Types

using | ChainT = typename TreeT::RootNodeType::NodeChainType
using | NodeT = typename ChainT::template Get<ChildNodeLevel>
using | TimeSpanT = typename RayT::TimeSpan

## Public Member Functions

| VolumeHDDA ()
template<typename AccessorT>
TimeSpanT | march (RayT &ray, AccessorT &acc)
template<typename AccessorT, typename ListT>
void | hits (RayT &ray, AccessorT &acc, ListT &times)

## Friends

class | VolumeHDDA< TreeT, RayT, ChildNodeLevel+1 >

## Detailed Description

template<typename TreeT, typename RayT, int ChildNodeLevel>
class openvdb::v11_0::math::VolumeHDDA< TreeT, RayT, ChildNodeLevel >

Helper class that implements Hierarchical Digital Differential Analyzers for ray intersections against a generic volume.

The template argument ChildNodeLevel specifies the entry upper node level used for the hierarchical ray-marching. The final lowest level is always the leaf node level, i.e. not the voxel level!

## Member Typedef Documentation

## ChainT

template<typename TreeT, typename RayT, int ChildNodeLevel>

using ChainT = typename TreeT::RootNodeType::NodeChainType

## NodeT

template<typename TreeT, typename RayT, int ChildNodeLevel>

using NodeT = typename ChainT::template Get<ChildNodeLevel>

## TimeSpanT

template<typename TreeT, typename RayT, int ChildNodeLevel>

using TimeSpanT = typename RayT::TimeSpan

## Constructor & Destructor Documentation

## VolumeHDDA()

template<typename TreeT, typename RayT, int ChildNodeLevel>

VolumeHDDA | ( |  | ) |

inline

## Member Function Documentation

## hits()

template<typename TreeT, typename RayT, int ChildNodeLevel>
template<typename AccessorT, typename ListT>

void hits | ( | RayT & | ray,
|  | AccessorT & | acc,
|  | ListT & | times )

inline

ListType is a list of RayType::TimeSpan and is required to have the two methods: clear() and push_back(). Thus, it could be std::vector<typename RayType::TimeSpan> or std::deque<typename RayType::TimeSpan>.

## march()

template<typename TreeT, typename RayT, int ChildNodeLevel>
template<typename AccessorT>

TimeSpanT march | ( | RayT & | ray,
|  | AccessorT & | acc )

inline

## Friends And Related Symbol Documentation

## VolumeHDDA< TreeT, RayT, ChildNodeLevel+1 >

template<typename TreeT, typename RayT, int ChildNodeLevel>

friend class VolumeHDDA< TreeT, RayT, ChildNodeLevel+1 >

friend