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

#include <openvdb/math/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

using ConstPtr = SharedPtr<const Transform>

Constructor & Destructor Documentation

Transform ( )
inline
Transform ( const MapBase::Ptr )
Transform ( const Transform )
~Transform ( )
inline

Member Function Documentation

MapBase::ConstPtr baseMap ( ) const
inline

Return a base pointer to the transformation map.

MapBase::Ptr baseMap ( )
inline

Return a base pointer to the transformation map.

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.

Ptr copy ( ) const
inline
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.

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

Create and return a shared pointer to a new transform.

static Transform::Ptr createLinearTransform ( const Mat4R )
static

Create and return a shared pointer to a new transform.

bool hasUniformScale ( ) const
inline

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

Vec3d indexToWorld ( const Vec3d xyz) const
inline

Apply this transformation to the given coordinates.

Vec3d indexToWorld ( const Coord ijk) const
inline

Apply this transformation to the given coordinates.

BBoxd indexToWorld ( const CoordBBox ) const

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

Returns
an axis-aligned world-space bounding box
BBoxd indexToWorld ( const BBoxd ) const

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

Returns
an axis-aligned world-space bounding box
bool isIdentity ( ) const

Return true if the transform is equivalent to an idenity.

bool isLinear ( ) const
inline

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

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.

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.

Name mapType ( ) const
inline

Return the transformation map's type-name.

bool operator!= ( const Transform other) const
inline
bool operator== ( const Transform other) const
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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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

Print a description of this transform.

Parameters
osa stream to which to write textual information
indenta string with which to prefix each line of text
void read ( std::istream &  )

Unserialize this transform from the given stream.

Vec3d voxelSize ( ) const
inline

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

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.
double voxelVolume ( ) const
inline

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

double voxelVolume ( const Vec3d xyz) const
inline

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

Vec3d worldToIndex ( const Vec3d xyz) const
inline

Apply this transformation to the given coordinates.

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
Coord worldToIndexCellCentered ( const Vec3d xyz) const
inline

Apply this transformation to the given coordinates.

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
Coord worldToIndexNodeCentered ( const Vec3d xyz) const
inline

Apply this transformation to the given coordinates.

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
void write ( std::ostream &  ) const

Serialize this transform to the given stream.