OpenVDB: Transform Class Reference

OpenVDB 6.1.0

Public Types | Public Member Functions | List of all members
Transform Class Reference

`#include <Transform.h>`

## Public Types
using | Ptr = SharedPtr< Transform >
using | ConstPtr = SharedPtr< const Transform >

## Public Member Functions
| Transform ()
| Transform (const MapBase::Ptr &)
| Transform (const Transform &)
| ~Transform ()
Ptr | copy () const
bool | isLinear () const
| Return `true` if the transformation map is exclusively linear/affine. More...
bool | isIdentity () const
| Return `true` if the transform is equivalent to an idenity. More...
Name | mapType () const
| Return the transformation map's type-name. More...
Vec3d | voxelSize () const
| Return the size of a voxel using the linear component of the map. More...
Vec3d | voxelSize (const Vec3d &xyz) const
| Return the size of a voxel at position (x, y, z). More...
double | voxelVolume () const
| Return the voxel volume of the linear component of the map. More...
double | voxelVolume (const Vec3d &xyz) const
| Return the voxel volume at position (x, y, z). More...
bool | hasUniformScale () const
| Return true if the voxels in world space are uniformly sized cubes. More...
void | read (std::istream &)
| Unserialize this transform from the given stream. More...
void | write (std::ostream &) const
| Serialize this transform to the given stream. More...
void | print (std::ostream &os=std::cout, const std::string &indent="") const
| Print a description of this transform. More...
bool | operator== (const Transform &other) const
bool | operator!= (const Transform &other) const
void | preRotate (double radians, const Axis axis=X_AXIS)
| Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last. More...
void | preTranslate (const Vec3d &)
| Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last. More...
void | preScale (const Vec3d &)
| Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last. More...
void | preScale (double)
| Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last. More...
void | preShear (double shear, Axis axis0, Axis axis1)
| Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last. More...
void | preMult (const Mat4d &)
| Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last. More...
void | preMult (const Mat3d &)
| Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last. More...
void | postRotate (double radians, const Axis axis=X_AXIS)
| Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last. More...
void | postTranslate (const Vec3d &)
| Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last. More...
void | postScale (const Vec3d &)
| Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last. More...
void | postScale (double)
| Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last. More...
void | postShear (double shear, Axis axis0, Axis axis1)
| Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last. More...
void | postMult (const Mat4d &)
| Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last. More...
void | postMult (const Mat3d &)
| Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last. More...
Vec3d | indexToWorld (const Vec3d &xyz) const
| Apply this transformation to the given coordinates. More...
Vec3d | indexToWorld (const Coord &ijk) const
| Apply this transformation to the given coordinates. More...
Vec3d | worldToIndex (const Vec3d &xyz) const
| Apply this transformation to the given coordinates. More...
Coord | worldToIndexCellCentered (const Vec3d &xyz) const
| Apply this transformation to the given coordinates. More...
Coord | worldToIndexNodeCentered (const Vec3d &xyz) const
| Apply this transformation to the given coordinates. More...
BBoxd | indexToWorld (const CoordBBox &) const
| Apply this transformation to the given index-space bounding box. More...
BBoxd | indexToWorld (const BBoxd &) const
| Apply this transformation to the given index-space bounding box. More...
BBoxd | worldToIndex (const BBoxd &) const
| Apply the inverse of this transformation to the given world-space bounding box. More...
CoordBBox | worldToIndexCellCentered (const BBoxd &) const
| Apply the inverse of this transformation to the given world-space bounding box. More...
CoordBBox | worldToIndexNodeCentered (const BBoxd &) const
| Apply the inverse of this transformation to the given world-space bounding box. More...
MapBase::ConstPtr | baseMap () const
| Return a base pointer to the transformation map. More...
MapBase::Ptr | baseMap ()
| Return a base pointer to the transformation map. More...
template<typename MapType >
MapType::Ptr | map ()
| Return the result of downcasting the base map pointer to a `MapType` pointer, or return a null pointer if the types are incompatible. More...
template<typename MapType >
MapType::ConstPtr | map () const
| Return the result of downcasting the base map pointer to a `MapType` pointer, or return a null pointer if the types are incompatible. More...
template<typename MapType >
MapType::ConstPtr | constMap () const
| Return the result of downcasting the base map pointer to a `MapType` pointer, or return a null pointer if the types are incompatible. More...

## Static Public Member Functions
static Transform::Ptr | createLinearTransform (double voxelSize=1.0)
| Create and return a shared pointer to a new transform. More...
static Transform::Ptr | createLinearTransform (const Mat4R &)
| Create and return a shared pointer to a new transform. More...
static Transform::Ptr | createFrustumTransform (const BBoxd &, double taper, double depth, double voxelSize=1.0)
| Create and return a shared pointer to a new transform. More...

## Detailed Description

## Member Typedef Documentation

## ◆ ConstPtr

using ConstPtr = SharedPtr<const Transform>

## ◆ Ptr

using Ptr = SharedPtr<Transform>

## Constructor & Destructor Documentation

## ◆ Transform() [1/3]

Transform | ( |  | ) |
| inline

## ◆ Transform() [2/3]

Transform | ( | const MapBase::Ptr & |  | ) |

## ◆ Transform() [3/3]

Transform | ( | const Transform & |  | ) |

## ◆ ~Transform()

~Transform | ( |  | ) |
| inline

## Member Function Documentation

## ◆ baseMap() [1/2]

MapBase::ConstPtr baseMap | ( |  | ) | const
| inline

Return a base pointer to the transformation map.

## ◆ baseMap() [2/2]

MapBase::Ptr baseMap | ( |  | ) |
| inline

Return a base pointer to the transformation map.

## ◆ constMap()

MapType::ConstPtr constMap | ( |  | ) | const
| inline

Return the result of downcasting the base map pointer to a `MapType` pointer, or return a null pointer if the types are incompatible.

## ◆ copy()

Ptr copy | ( |  | ) | const
| inline

## ◆ createFrustumTransform()

static Transform::Ptr createFrustumTransform | ( | const BBoxd & | ,
|  | double | taper,
|  | double | depth,
|  | double | voxelSize = `1.0`
| ) |  |
| static

Create and return a shared pointer to a new transform.

## ◆ createLinearTransform() [1/2]

static Transform::Ptr createLinearTransform | ( | double | voxelSize = `1.0` | ) |
| static

Create and return a shared pointer to a new transform.

## ◆ createLinearTransform() [2/2]

static Transform::Ptr createLinearTransform | ( | const Mat4R & |  | ) |
| static

Create and return a shared pointer to a new transform.

## ◆ hasUniformScale()

bool hasUniformScale | ( |  | ) | const
| inline

Return true if the voxels in world space are uniformly sized cubes.

## ◆ indexToWorld() [1/4]

Vec3d indexToWorld | ( | const Vec3d & | xyz | ) | const
| inline

Apply this transformation to the given coordinates.

## ◆ indexToWorld() [2/4]

Vec3d indexToWorld | ( | const Coord & | ijk | ) | const
| inline

Apply this transformation to the given coordinates.

## ◆ indexToWorld() [3/4]

BBoxd indexToWorld | ( | const CoordBBox & |  | ) | const

Apply this transformation to the given index-space bounding box.

Returns
  an axis-aligned world-space bounding box

## ◆ indexToWorld() [4/4]

BBoxd indexToWorld | ( | const BBoxd & |  | ) | const

Apply this transformation to the given index-space bounding box.

Returns
  an axis-aligned world-space bounding box

## ◆ isIdentity()

bool isIdentity | ( |  | ) | const

Return `true` if the transform is equivalent to an idenity.

## ◆ isLinear()

bool isLinear | ( |  | ) | const
| inline

Return `true` if the transformation map is exclusively linear/affine.

## ◆ map() [1/2]

MapType::Ptr map | ( |  | ) |
| inline

Return the result of downcasting the base map pointer to a `MapType` pointer, or return a null pointer if the types are incompatible.

## ◆ map() [2/2]

MapType::ConstPtr map | ( |  | ) | const
| inline

Return the result of downcasting the base map pointer to a `MapType` pointer, or return a null pointer if the types are incompatible.

## ◆ mapType()

Name mapType | ( |  | ) | const
| inline

Return the transformation map's type-name.

## ◆ operator!=()

bool operator!= | ( | const Transform & | other | ) | const
| inline

## ◆ operator==()

bool operator== | ( | const Transform & | other | ) | const

## ◆ postMult() [1/2]

void postMult | ( | const Mat4d & |  | ) |

Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last.

## ◆ postMult() [2/2]

void postMult | ( | const Mat3d & |  | ) |

Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last.

## ◆ postRotate()

void postRotate | ( | double | radians,
|  | const Axis | axis = `X_AXIS`
| ) |  |

Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last.

## ◆ postScale() [1/2]

void postScale | ( | const Vec3d & |  | ) |

Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last.

## ◆ postScale() [2/2]

void postScale | ( | double |  | ) |

Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last.

## ◆ postShear()

void postShear | ( | double | shear,
|  | Axis | axis0,
|  | Axis | axis1
| ) |  |

Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last.

## ◆ postTranslate()

void postTranslate | ( | const Vec3d & |  | ) |

Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last.

## ◆ preMult() [1/2]

void preMult | ( | const Mat4d & |  | ) |

Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last.

## ◆ preMult() [2/2]

void preMult | ( | const Mat3d & |  | ) |

Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last.

## ◆ preRotate()

void preRotate | ( | double | radians,
|  | const Axis | axis = `X_AXIS`
| ) |  |

Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last.

## ◆ preScale() [1/2]

void preScale | ( | const Vec3d & |  | ) |

Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last.

## ◆ preScale() [2/2]

void preScale | ( | double |  | ) |

Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last.

## ◆ preShear()

void preShear | ( | double | shear,
|  | Axis | axis0,
|  | Axis | axis1
| ) |  |

Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last.

## ◆ preTranslate()

void preTranslate | ( | const Vec3d & |  | ) |

Update the linear (affine) map by prepending or postfixing the appropriate operation. In the case of a frustum, the pre-operations apply to the linear part of the transform and not the entire transform, while the post-operations are allways applied last.

## ◆ print()

void print | ( | std::ostream & | os = `std::cout`,
|  | const std::string & | indent = `""`
| ) |  | const

Print a description of this transform.

Parameters

  os | a stream to which to write textual information
  indent | a string with which to prefix each line of text

## ◆ read()

void read | ( | std::istream & |  | ) |

Unserialize this transform from the given stream.

## ◆ voxelSize() [1/2]

Vec3d voxelSize | ( |  | ) | const
| inline

Return the size of a voxel using the linear component of the map.

## ◆ voxelSize() [2/2]

Vec3d voxelSize | ( | const Vec3d & | xyz | ) | const
| inline

Return the size of a voxel at position (x, y, z).

Note
  Maps that have a nonlinear component (e.g., perspective and frustum maps) have position-dependent voxel sizes.

## ◆ voxelVolume() [1/2]

double voxelVolume | ( |  | ) | const
| inline

Return the voxel volume of the linear component of the map.

## ◆ voxelVolume() [2/2]

double voxelVolume | ( | const Vec3d & | xyz | ) | const
| inline

Return the voxel volume at position (x, y, z).

## ◆ worldToIndex() [1/2]

Vec3d worldToIndex | ( | const Vec3d & | xyz | ) | const
| inline

Apply this transformation to the given coordinates.

## ◆ worldToIndex() [2/2]

BBoxd worldToIndex | ( | const BBoxd & |  | ) | const

Apply the inverse of this transformation to the given world-space bounding box.

Returns
  an axis-aligned index-space bounding box

## ◆ worldToIndexCellCentered() [1/2]

Coord worldToIndexCellCentered | ( | const Vec3d & | xyz | ) | const
| inline

Apply this transformation to the given coordinates.

## ◆ worldToIndexCellCentered() [2/2]

CoordBBox worldToIndexCellCentered | ( | const BBoxd & |  | ) | const

Apply the inverse of this transformation to the given world-space bounding box.

Returns
  an axis-aligned index-space bounding box

## ◆ worldToIndexNodeCentered() [1/2]

Coord worldToIndexNodeCentered | ( | const Vec3d & | xyz | ) | const
| inline

Apply this transformation to the given coordinates.

## ◆ worldToIndexNodeCentered() [2/2]

CoordBBox worldToIndexNodeCentered | ( | const BBoxd & |  | ) | const

Apply the inverse of this transformation to the given world-space bounding box.

Returns
  an axis-aligned index-space bounding box

## ◆ write()

void write | ( | std::ostream & |  | ) | const

Serialize this transform to the given stream.

The documentation for this class was generated from the following file:

- Transform.h