A Digital Differential Analyzer specialized for OpenVDB grids.
More...
#include <openvdb/math/DDA.h>
|
| DDA () |
| uninitialized constructor More...
|
|
| 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. More...
|
|
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. More...
|
|
RealType | time () const |
| Return the time (parameterized along the Ray) of the first hit of a tree node of size 2^Log2Dim. More...
|
|
RealType | maxTime () const |
| Return the maximum time (parameterized along the Ray). More...
|
|
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...
|
|
void | print (std::ostream &os=std::cout) const |
| Print information about this DDA for debugging. More...
|
|
template<typename RayT, Index Log2Dim = 0>
class openvdb::v9_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.
using RealType = typename RayT::RealType |
using Vec3Type = typename RayT::Vec3Type |
uninitialized constructor
DDA |
( |
const RayT & |
ray, |
|
|
RealT |
startTime |
|
) |
| |
|
inline |
void init |
( |
const RayT & |
ray, |
|
|
RealT |
startTime, |
|
|
RealT |
maxTime |
|
) |
| |
|
inline |
void init |
( |
const RayT & |
ray | ) |
|
|
inline |
void init |
( |
const RayT & |
ray, |
|
|
RealT |
startTime |
|
) |
| |
|
inline |
Return the maximum time (parameterized along the Ray).
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.
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. |
Increment the voxel index to next intersected voxel or node and returns true if the step in time does not exceed maxTime.
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.
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.