A Digital Differential Analyzer specialized for OpenVDB grids.
More...
#include <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::v5_2::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.
◆ RealT
◆ RealType
◆ Vec3T
◆ Vec3Type
◆ DDA() [1/4]
uninitialized constructor
◆ DDA() [2/4]
◆ DDA() [3/4]
DDA |
( |
const RayT & |
ray, |
|
|
RealT |
startTime |
|
) |
| |
|
inline |
◆ DDA() [4/4]
◆ init() [1/3]
void init |
( |
const RayT & |
ray, |
|
|
RealT |
startTime, |
|
|
RealT |
maxTime |
|
) |
| |
|
inline |
◆ init() [2/3]
void init |
( |
const RayT & |
ray | ) |
|
|
inline |
◆ init() [3/3]
void init |
( |
const RayT & |
ray, |
|
|
RealT |
startTime |
|
) |
| |
|
inline |
◆ maxTime()
Return the maximum time (parameterized along the Ray).
◆ next()
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()
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()
Increment the voxel index to next intersected voxel or node and returns true if the step in time does not exceed maxTime.
◆ time()
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()
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.
The documentation for this class was generated from the following file: