Loading...
Searching...
No Matches
Ray< RealT > Class Template Reference

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

## Classes

struct | TimeSpan

## Public Types

using | RealType = RealT
using | Vec3Type = Vec3< RealT >
using | Vec3T = Vec3Type

## Public Member Functions

| Ray (const Vec3Type &eye=Vec3Type(0, 0, 0), const Vec3Type &direction=Vec3Type(1, 0, 0), RealT t0=math::Delta< RealT >::value(), RealT t1=std::numeric_limits< RealT >::max())
void | setEye (const Vec3Type &eye)
void | setDir (const Vec3Type &dir)
void | setMinTime (RealT t0)
void | setMaxTime (RealT t1)
void | setTimes (RealT t0=math::Delta< RealT >::value(), RealT t1=std::numeric_limits< RealT >::max())
void | scaleTimes (RealT scale)
void | reset (const Vec3Type &eye, const Vec3Type &direction, RealT t0=math::Delta< RealT >::value(), RealT t1=std::numeric_limits< RealT >::max())
const Vec3T & | eye () const
const Vec3T & | dir () const
const Vec3T & | invDir () const
RealT | t0 () const
RealT | t1 () const
Vec3R | operator() (RealT time) const
| Return the position along the ray at the specified time.
Vec3R | start () const
| Return the starting point of the ray.
Vec3R | end () const
| Return the endpoint of the ray.
Vec3R | mid () const
| Return the midpoint of the ray.
bool | valid (RealT eps=math::Delta< float >::value()) const
| Return `true` if t1 is larger than t0 by at least eps.
bool | test (RealT time) const
| Return `true` if time is within t0 and t1, both inclusive.
template<typename MapType >
Ray | applyMap (const MapType &map) const
| Return a new Ray that is transformed with the specified map.
template<typename MapType >
Ray | applyInverseMap (const MapType &map) const
| Return a new Ray that is transformed with the inverse of the specified map.
template<typename GridType >
Ray | indexToWorld (const GridType &grid) const
| Return a new ray in world space, assuming the existing ray is represented in the index space of the specified grid.
template<typename GridType >
Ray | worldToIndex (const GridType &grid) const
| Return a new ray in the index space of the specified grid, assuming the existing ray is represented in world space.
bool | intersects (const Vec3T &center, RealT radius, RealT &t0, RealT &t1) const
| Return true if this ray intersects the specified sphere.
bool | intersects (const Vec3T &center, RealT radius) const
| Return true if this ray intersects the specified sphere.
bool | clip (const Vec3T &center, RealT radius)
| Return true if this ray intersects the specified sphere.
template<typename BBoxT >
bool | intersects (const BBoxT &bbox, RealT &t0, RealT &t1) const
| Return true if the Ray intersects the specified axisaligned bounding box.
template<typename BBoxT >
bool | intersects (const BBoxT &bbox) const
| Return true if this ray intersects the specified bounding box.
template<typename BBoxT >
bool | clip (const BBoxT &bbox)
| Return true if this ray intersects the specified bounding box.
bool | intersects (const Vec3T &normal, RealT distance, RealT &t) const
| Return true if the Ray intersects the plane specified by a normal and distance from the origin.
bool | intersects (const Vec3T &normal, const Vec3T &point, RealT &t) const
| Return true if the Ray intersects the plane specified by a normal and point.

## Member Typedef Documentation

## RealType

template<typename RealT = double>

using RealType = RealT

## Vec3T

template<typename RealT = double>

using Vec3T = Vec3Type

## Vec3Type

template<typename RealT = double>

using Vec3Type = Vec3<RealT>

## Constructor & Destructor Documentation

## Ray()

template<typename RealT = double>

Ray | ( | const Vec3Type & | eye = `Vec3Type(0,0,0)`,
|  | const Vec3Type & | direction = `Vec3Type(1,0,0)`,
|  | RealT | t0 = `math::Delta<RealT>::value()`,
|  | RealT | t1 = `std::numeric_limits<RealT>::max()`
| ) |  |

inline

## Member Function Documentation

## applyInverseMap()

template<typename RealT = double>
template<typename MapType >

Ray applyInverseMap | ( | const MapType & | map | ) | const

inline

Return a new Ray that is transformed with the inverse of the specified map.

Parameters

  map | the map from which to construct the new Ray by inverse mapping.

Warning
  Assumes a linear map and a normalized direction.

The requirement that the direction is normalized follows from the transformation of t0 and t1 - and that fact that we want applyMap and applyInverseMap to be inverse operations.

## applyMap()

template<typename RealT = double>
template<typename MapType >

Ray applyMap | ( | const MapType & | map | ) | const

inline

Return a new Ray that is transformed with the specified map.

Parameters

  map | the map from which to construct the new Ray.

Warning
  Assumes a linear map and a normalized direction.

The requirement that the direction is normalized follows from the transformation of t0 and t1 - and that fact that we want applyMap and applyInverseMap to be inverse operations.

## clip() [1/2]

template<typename RealT = double>
template<typename BBoxT >

bool clip | ( | const BBoxT & | bbox | ) |

inline

Return true if this ray intersects the specified bounding box.

Note
  For intersection this ray is clipped to the two intersection points.

Parameters

  bbox | Axis-aligned bounding box in the same space as this ray.

## clip() [2/2]

template<typename RealT = double>

bool clip | ( | const Vec3T & | center,
|  | RealT | radius
| ) |  |

inline

Return true if this ray intersects the specified sphere.

Note
  For intersection this ray is clipped to the two intersection points.

Parameters

  center | The center of the sphere in the same space as this ray.
  radius | The radius of the sphere in the same units as this ray.

## dir()

template<typename RealT = double>

const Vec3T & dir | ( |  | ) | const

inline

## end()

template<typename RealT = double>

Vec3R end | ( |  | ) | const

inline

Return the endpoint of the ray.

## eye()

template<typename RealT = double>

const Vec3T & eye | ( |  | ) | const

inline

## indexToWorld()

template<typename RealT = double>
template<typename GridType >

Ray indexToWorld | ( | const GridType & | grid | ) | const

inline

Return a new ray in world space, assuming the existing ray is represented in the index space of the specified grid.

## intersects() [1/6]

template<typename RealT = double>
template<typename BBoxT >

bool intersects | ( | const BBoxT & | bbox | ) | const

inline

Return true if this ray intersects the specified bounding box.

Parameters

  bbox | Axis-aligned bounding box in the same space as this ray.

## intersects() [2/6]

template<typename RealT = double>
template<typename BBoxT >

bool intersects | ( | const BBoxT & | bbox,
|  | RealT & | t0,
|  | RealT & | t1
| ) |  | const

inline

Return true if the Ray intersects the specified axisaligned bounding box.

Parameters

  bbox | Axis-aligned bounding box in the same space as the Ray.
  t0 | If an intersection is detected this is assigned the time for the first intersection point.
  t1 | If an intersection is detected this is assigned the time for the second intersection point.

## intersects() [3/6]

template<typename RealT = double>

bool intersects | ( | const Vec3T & | center,
|  | RealT | radius
| ) |  | const

inline

Return true if this ray intersects the specified sphere.

Parameters

  center | The center of the sphere in the same space as this ray.
  radius | The radius of the sphere in the same units as this ray.

## intersects() [4/6]

template<typename RealT = double>

bool intersects | ( | const Vec3T & | center,
|  | RealT | radius,
|  | RealT & | t0,
|  | RealT & | t1
| ) |  | const

inline

Return true if this ray intersects the specified sphere.

Parameters

  center | The center of the sphere in the same space as this ray.
  radius | The radius of the sphere in the same units as this ray.
  t0 | The first intersection point if an intersection exists.
  t1 | The second intersection point if an intersection exists.

Note
  If the return value is true, i.e. a hit, and t0 = this->t0() or t1 == this->t1() only one true intersection exist.

## intersects() [5/6]

template<typename RealT = double>

bool intersects | ( | const Vec3T & | normal,
|  | const Vec3T & | point,
|  | RealT & | t
| ) |  | const

inline

Return true if the Ray intersects the plane specified by a normal and point.

Parameters

  normal | Normal of the plane.
  point | Point in the plane.
  t | Time of intersection, if one exists.

## intersects() [6/6]

template<typename RealT = double>

bool intersects | ( | const Vec3T & | normal,
|  | RealT | distance,
|  | RealT & | t
| ) |  | const

inline

Return true if the Ray intersects the plane specified by a normal and distance from the origin.

Parameters

  normal | Normal of the plane.
  distance | Distance of the plane to the origin.
  t | Time of intersection, if one exists.

## invDir()

template<typename RealT = double>

const Vec3T & invDir | ( |  | ) | const

inline

## mid()

template<typename RealT = double>

Vec3R mid | ( |  | ) | const

inline

Return the midpoint of the ray.

## operator()()

template<typename RealT = double>

Vec3R operator() | ( | RealT | time | ) | const

inline

Return the position along the ray at the specified time.

## reset()

template<typename RealT = double>

void reset | ( | const Vec3Type & | eye,
|  | const Vec3Type & | direction,
|  | RealT | t0 = `math::Delta<RealT>::value()`,
|  | RealT | t1 = `std::numeric_limits<RealT>::max()`
| ) |  |

inline

## scaleTimes()

template<typename RealT = double>

void scaleTimes | ( | RealT | scale | ) |

inline

## setDir()

template<typename RealT = double>

void setDir | ( | const Vec3Type & | dir | ) |

inline

## setEye()

template<typename RealT = double>

void setEye | ( | const Vec3Type & | eye | ) |

inline

## setMaxTime()

template<typename RealT = double>

void setMaxTime | ( | RealT | t1 | ) |

inline

## setMinTime()

template<typename RealT = double>

void setMinTime | ( | RealT | t0 | ) |

inline

## setTimes()

template<typename RealT = double>

void setTimes | ( | RealT | t0 = `math::Delta<RealT>::value()`,
|  | RealT | t1 = `std::numeric_limits<RealT>::max()`
| ) |  |

inline

## start()

template<typename RealT = double>

Vec3R start | ( |  | ) | const

inline

Return the starting point of the ray.

## t0()

template<typename RealT = double>

RealT t0 | ( |  | ) | const

inline

## t1()

template<typename RealT = double>

RealT t1 | ( |  | ) | const

inline

## test()

template<typename RealT = double>

bool test | ( | RealT | time | ) | const

inline

Return `true` if time is within t0 and t1, both inclusive.

## valid()

template<typename RealT = double>

bool valid | ( | RealT | eps = `math::Delta<float>::value()` | ) | const

inline

Return `true` if t1 is larger than t0 by at least eps.

## worldToIndex()

template<typename RealT = double>
template<typename GridType >

Ray worldToIndex | ( | const GridType & | grid | ) | const

inline

Return a new ray in the index space of the specified grid, assuming the existing ray is represented in world space.