OpenVDB 10.0.1
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static 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...
 
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 &)
 
void preScale (const Vec3d &)
 
void preScale (double)
 
void preShear (double shear, Axis axis0, Axis axis1)
 
void preMult (const Mat4d &)
 
void preMult (const Mat3d &)
 
void postRotate (double radians, const Axis axis=X_AXIS)
 
void postTranslate (const Vec3d &)
 
void postScale (const Vec3d &)
 
void postScale (double)
 
void postShear (double shear, Axis axis0, Axis axis1)
 
void postMult (const Mat4d &)
 
void postMult (const Mat3d &)
 
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...
 
Vec3d indexToWorld (const Vec3d &xyz) const
 Apply this transformation to the given coordinates. More...
 
Vec3d indexToWorld (const Coord &ijk) const
 
Vec3d worldToIndex (const Vec3d &xyz) const
 
Coord worldToIndexCellCentered (const Vec3d &xyz) const
 
Coord worldToIndexNodeCentered (const Vec3d &xyz) const
 
BBoxd indexToWorld (const CoordBBox &) const
 Apply this transformation to the given index-space bounding box. More...
 
BBoxd indexToWorld (const BBoxd &) const
 
BBoxd worldToIndex (const BBoxd &) const
 Apply the inverse of this transformation to the given world-space bounding box. More...
 
CoordBBox worldToIndexCellCentered (const BBoxd &) const
 
CoordBBox worldToIndexNodeCentered (const BBoxd &) const
 
MapBase::ConstPtr baseMap () const
 Return a base pointer to the transformation map. More...
 
MapBase::Ptr baseMap ()
 
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
 
template<typename MapType >
MapType::ConstPtr constMap () const
 
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
 

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 &)
 
static Transform::Ptr createFrustumTransform (const BBoxd &, double taper, double depth, double voxelSize=1.0)
 

Detailed Description

Member Typedef Documentation

◆ ConstPtr

using ConstPtr = SharedPtr<const Transform>

◆ Ptr

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::Ptr baseMap ( )
inline

◆ baseMap() [2/2]

MapBase::ConstPtr baseMap ( ) const
inline

Return a base pointer to the transformation map.

◆ constMap()

MapType::ConstPtr constMap
inline

◆ copy()

Ptr copy ( ) const
inline

◆ createFrustumTransform()

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

◆ createLinearTransform() [1/2]

static Transform::Ptr createLinearTransform ( const Mat4R )
static

◆ createLinearTransform() [2/2]

static Transform::Ptr createLinearTransform ( double  voxelSize = 1.0)
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]

BBoxd indexToWorld ( const BBoxd ) const

◆ indexToWorld() [2/4]

Vec3d indexToWorld ( const Coord ijk) const
inline

◆ 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]

Vec3d indexToWorld ( const Vec3d xyz) const
inline

Apply this transformation to the given coordinates.

◆ 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
inline

◆ 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 Mat3d )

◆ postMult() [2/2]

void postMult ( const Mat4d )

◆ postRotate()

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

◆ postScale() [1/2]

void postScale ( const Vec3d )

◆ postScale() [2/2]

void postScale ( double  )

◆ postShear()

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

◆ postTranslate()

void postTranslate ( const Vec3d )

◆ preMult() [1/2]

void preMult ( const Mat3d )

◆ preMult() [2/2]

void preMult ( const Mat4d )

◆ 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 )

◆ preScale() [2/2]

void preScale ( double  )

◆ preShear()

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

◆ preTranslate()

void preTranslate ( const Vec3d )

◆ print()

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

◆ 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]

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

◆ worldToIndex() [2/2]

Vec3d worldToIndex ( const Vec3d xyz) const
inline

◆ worldToIndexCellCentered() [1/2]

CoordBBox worldToIndexCellCentered ( const BBoxd ) const

◆ worldToIndexCellCentered() [2/2]

Coord worldToIndexCellCentered ( const Vec3d xyz) const
inline

◆ worldToIndexNodeCentered() [1/2]

CoordBBox worldToIndexNodeCentered ( const BBoxd ) const

◆ worldToIndexNodeCentered() [2/2]

Coord worldToIndexNodeCentered ( const Vec3d xyz) const
inline

◆ write()

void write ( std::ostream &  ) const

Serialize this transform to the given stream.