OpenVDB 12.1.0

Loading...
Searching...
No Matches
AffineMap Class Referencefinal

A general linear transform using homogeneous coordinates to perform rotation, scaling, shear and translation. More...

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

Inheritance diagram for AffineMap:

## Public Types
using | Ptr = SharedPtr<AffineMap>
using | ConstPtr = SharedPtr<const AffineMap>
using | MapFactory = Ptr (*)()

## Public Member Functions
| AffineMap ()
| AffineMap (const Mat3d &m)
| AffineMap (const Mat4d &m)
| AffineMap (const AffineMap &other)
| AffineMap (const AffineMap &first, const AffineMap &second)
| constructor that merges the matrixes for two affine maps
| ~AffineMap () override=default
MapBase::Ptr | copy () const override
| Return a MapBase::Ptr to a deep copy of this map.
MapBase::Ptr | inverseMap () const override
| Return a new map representing the inverse of this map.
Name | type () const override
| Return the name of this map's concrete type (e.g., `"AffineMap"`).
bool | isLinear () const override
| Return `true` (an AffineMap is always linear).
bool | hasUniformScale () const override
| Return `false` ( test if this is unitary with translation )
bool | isEqual (const MapBase &other) const override
| Return `true` if this map is equal to the given map.
bool | operator== (const AffineMap &other) const
bool | operator!= (const AffineMap &other) const
AffineMap & | operator= (const AffineMap &other)
Vec3d | applyMap (const Vec3d &in) const override
| Return the image of `in` under the map.
Vec3d | applyInverseMap (const Vec3d &in) const override
| Return the pre-image of `in` under the map.
Vec3d | applyJacobian (const Vec3d &in, const Vec3d &) const override
| Return the Jacobian of the map applied to in.
Vec3d | applyJacobian (const Vec3d &in) const override
| Return the Jacobian of the map applied to in.
Vec3d | applyInverseJacobian (const Vec3d &in, const Vec3d &) const override
| Return the Inverse Jacobian of the map applied to in (i.e. inverse map with out translation)
Vec3d | applyInverseJacobian (const Vec3d &in) const override
| Return the Inverse Jacobian of the map applied to in (i.e. inverse map with out translation)
Vec3d | applyJT (const Vec3d &in, const Vec3d &) const override
Vec3d | applyJT (const Vec3d &in) const override
| Return the Jacobian Transpose of the map applied to in.
Vec3d | applyIJT (const Vec3d &in, const Vec3d &) const override
| Return the transpose of the inverse Jacobian of the map applied to in.
Vec3d | applyIJT (const Vec3d &in) const override
| Return the transpose of the inverse Jacobian of the map applied to `in`.
Mat3d | applyIJC (const Mat3d &m) const override
| Return the Jacobian Curvature: zero for a linear map.
Mat3d | applyIJC (const Mat3d &in, const Vec3d &, const Vec3d &) const override
double | determinant (const Vec3d &) const override
| Return the determinant of the Jacobian, ignores argument.
double | determinant () const override
| Return the determinant of the Jacobian.
Vec3d | voxelSize () const override
| Return the lengths of the images of the segments (0,0,0)-(1,0,0), (0,0,0)-(0,1,0) and (0,0,0)-(0,0,1).
Vec3d | voxelSize (const Vec3d &) const override
bool | isIdentity () const
| Return `true` if the underlying matrix is approximately an identity.
bool | isDiagonal () const
| Return `true` if the underylying matrix is diagonal.
bool | isScale () const
| Return `true` if the map is equivalent to a ScaleMap.
bool | isScaleTranslate () const
| Return `true` if the map is equivalent to a ScaleTranslateMap.
void | accumPreRotation (Axis axis, double radians)
| Modify the existing affine map by pre-applying the given operation.
void | accumPreScale (const Vec3d &v)
void | accumPreTranslation (const Vec3d &v)
void | accumPreShear (Axis axis0, Axis axis1, double shear)
void | accumPostRotation (Axis axis, double radians)
| Modify the existing affine map by post-applying the given operation.
void | accumPostScale (const Vec3d &v)
void | accumPostTranslation (const Vec3d &v)
void | accumPostShear (Axis axis0, Axis axis1, double shear)
void | read (std::istream &is) override
| read serialization
void | write (std::ostream &os) const override
| write serialization
std::string | str () const override
| string serialization, useful for debugging
SharedPtr< FullyDecomposedMap > | createDecomposedMap ()
| on-demand decomposition of the affine map
AffineMap::Ptr | getAffineMap () const override
| Return AffineMap::Ptr to a deep copy of the current AffineMap.
AffineMap::Ptr | inverse () const
| Return AffineMap::Ptr to the inverse of this map.
MapBase::Ptr | preRotate (double radians, Axis axis=X_AXIS) const override
| Return a MapBase::Ptr to a new map that is the result of prepending the appropraite operation.
MapBase::Ptr | preTranslate (const Vec3d &t) const override
MapBase::Ptr | preScale (const Vec3d &s) const override
MapBase::Ptr | preShear (double shear, Axis axis0, Axis axis1) const override
MapBase::Ptr | postRotate (double radians, Axis axis=X_AXIS) const override
| Return a MapBase::Ptr to a new map that is the result of postfixing the appropraite operation.
MapBase::Ptr | postTranslate (const Vec3d &t) const override
MapBase::Ptr | postScale (const Vec3d &s) const override
MapBase::Ptr | postShear (double shear, Axis axis0, Axis axis1) const override
Mat4d | getMat4 () const
| Return the matrix representation of this AffineMap.
const Mat4d & | getConstMat4 () const
const Mat3d & | getConstJacobianInv () const
template<typename MapT>
bool | isType () const
| Return `true` if this map is of concrete type `MapT` (e.g., AffineMap).

## Static Public Member Functions
static MapBase::Ptr | create ()
| Return a MapBase::Ptr to a new AffineMap.
static bool | isRegistered ()
static void | registerMap ()
static Name | mapType ()

## Static Protected Member Functions
template<typename MapT>
static bool | isEqualBase (const MapT &self, const MapBase &other)

## Detailed Description

A general linear transform using homogeneous coordinates to perform rotation, scaling, shear and translation.

## Member Typedef Documentation

## ◆ ConstPtr

using ConstPtr = SharedPtr<const AffineMap>

## ◆ MapFactory

using MapFactory = Ptr (*)()
| inherited

## ◆ Ptr

using Ptr = SharedPtr<AffineMap>

## Constructor & Destructor Documentation

## ◆ AffineMap() [1/5]

AffineMap | ( |  | ) |
| inline

## ◆ AffineMap() [2/5]

AffineMap | ( | const Mat3d & | m | ) |
| inline

## ◆ AffineMap() [3/5]

AffineMap | ( | const Mat4d & | m | ) |
| inline

## ◆ AffineMap() [4/5]

AffineMap | ( | const AffineMap & | other | ) |
| inline

## ◆ AffineMap() [5/5]

AffineMap | ( | const AffineMap & | first,
|  | const AffineMap & | second )
| inline

constructor that merges the matrixes for two affine maps

## ◆ ~AffineMap()

~AffineMap | ( |  | ) |
| override default

## Member Function Documentation

## ◆ accumPostRotation()

void accumPostRotation | ( | Axis | axis,
|  | double | radians )
| inline

Modify the existing affine map by post-applying the given operation.

## ◆ accumPostScale()

void accumPostScale | ( | const Vec3d & | v | ) |
| inline

## ◆ accumPostShear()

void accumPostShear | ( | Axis | axis0,
|  | Axis | axis1,
|  | double | shear )
| inline

## ◆ accumPostTranslation()

void accumPostTranslation | ( | const Vec3d & | v | ) |
| inline

## ◆ accumPreRotation()

void accumPreRotation | ( | Axis | axis,
|  | double | radians )
| inline

Modify the existing affine map by pre-applying the given operation.

## ◆ accumPreScale()

void accumPreScale | ( | const Vec3d & | v | ) |
| inline

## ◆ accumPreShear()

void accumPreShear | ( | Axis | axis0,
|  | Axis | axis1,
|  | double | shear )
| inline

## ◆ accumPreTranslation()

void accumPreTranslation | ( | const Vec3d & | v | ) |
| inline

## ◆ applyIJC() [1/2]

Mat3d applyIJC | ( | const Mat3d & | in,
|  | const Vec3d & | ,
|  | const Vec3d & | ) const
| inline override virtual

Implements MapBase.

## ◆ applyIJC() [2/2]

Mat3d applyIJC | ( | const Mat3d & | m | ) | const
| inline override virtual

Return the Jacobian Curvature: zero for a linear map.

Implements MapBase.

## ◆ applyIJT() [1/2]

Vec3d applyIJT | ( | const Vec3d & | in | ) | const
| inline override virtual

Return the transpose of the inverse Jacobian of the map applied to `in`.

Implements MapBase.

## ◆ applyIJT() [2/2]

Vec3d applyIJT | ( | const Vec3d & | in,
|  | const Vec3d & | ) const
| inline override virtual

Return the transpose of the inverse Jacobian of the map applied to in.

Implements MapBase.

## ◆ applyInverseJacobian() [1/2]

Vec3d applyInverseJacobian | ( | const Vec3d & | in | ) | const
| inline override virtual

Return the Inverse Jacobian of the map applied to in (i.e. inverse map with out translation)

Implements MapBase.

## ◆ applyInverseJacobian() [2/2]

Vec3d applyInverseJacobian | ( | const Vec3d & | in,
|  | const Vec3d & | ) const
| inline override virtual

Return the Inverse Jacobian of the map applied to in (i.e. inverse map with out translation)

Implements MapBase.

## ◆ applyInverseMap()

Vec3d applyInverseMap | ( | const Vec3d & | in | ) | const
| inline override virtual

Return the pre-image of `in` under the map.

Implements MapBase.

## ◆ applyJacobian() [1/2]

Vec3d applyJacobian | ( | const Vec3d & | in | ) | const
| inline override virtual

Return the Jacobian of the map applied to in.

Implements MapBase.

## ◆ applyJacobian() [2/2]

Vec3d applyJacobian | ( | const Vec3d & | in,
|  | const Vec3d & | ) const
| inline override virtual

Return the Jacobian of the map applied to in.

Implements MapBase.

## ◆ applyJT() [1/2]

Vec3d applyJT | ( | const Vec3d & | in | ) | const
| inline override virtual

Return the Jacobian Transpose of the map applied to in.

Implements MapBase.

## ◆ applyJT() [2/2]

Vec3d applyJT | ( | const Vec3d & | in,
|  | const Vec3d & | ) const
| inline override virtual

Return the Jacobian Transpose of the map applied to in. This tranforms range-space gradients to domain-space gradients

Implements MapBase.

## ◆ applyMap()

Vec3d applyMap | ( | const Vec3d & | in | ) | const
| inline override virtual

Return the image of `in` under the map.

Implements MapBase.

## ◆ copy()

MapBase::Ptr copy | ( |  | ) | const
| inline override virtual

Return a MapBase::Ptr to a deep copy of this map.

Implements MapBase.

## ◆ create()

MapBase::Ptr create | ( |  | ) |
| inline static

Return a MapBase::Ptr to a new AffineMap.

## ◆ createDecomposedMap()

SharedPtr< FullyDecomposedMap > createDecomposedMap | ( |  | ) |
| inline

on-demand decomposition of the affine map

## ◆ determinant() [1/2]

double determinant | ( |  | ) | const
| inline override virtual

Return the determinant of the Jacobian.

Implements MapBase.

## ◆ determinant() [2/2]

double determinant | ( | const Vec3d & |  | ) | const
| inline override virtual

Return the determinant of the Jacobian, ignores argument.

Implements MapBase.

## ◆ getAffineMap()

AffineMap::Ptr getAffineMap | ( |  | ) | const
| inline override virtual

Return AffineMap::Ptr to a deep copy of the current AffineMap.

Implements MapBase.

## ◆ getConstJacobianInv()

const Mat3d & getConstJacobianInv | ( |  | ) | const
| inline

## ◆ getConstMat4()

const Mat4d & getConstMat4 | ( |  | ) | const
| inline

## ◆ getMat4()

Mat4d getMat4 | ( |  | ) | const
| inline

Return the matrix representation of this AffineMap.

## ◆ hasUniformScale()

bool hasUniformScale | ( |  | ) | const
| inline override virtual

Return `false` ( test if this is unitary with translation )

Implements MapBase.

## ◆ inverse()

AffineMap::Ptr inverse | ( |  | ) | const
| inline

Return AffineMap::Ptr to the inverse of this map.

## ◆ inverseMap()

MapBase::Ptr inverseMap | ( |  | ) | const
| inline override virtual

Return a new map representing the inverse of this map.

Exceptions

  NotImplementedError | if the map is a NonlinearFrustumMap.

Warning
  Houdini 12.5 uses an earlier version of OpenVDB, and maps created with that version lack a virtual table entry for this method. Do not call this method from Houdini 12.5.

Implements MapBase.

## ◆ isDiagonal()

bool isDiagonal | ( |  | ) | const
| inline

Return `true` if the underylying matrix is diagonal.

## ◆ isEqual()

bool isEqual | ( | const MapBase & | other | ) | const
| inline override virtual

Return `true` if this map is equal to the given map.

Implements MapBase.

## ◆ isEqualBase()

template<typename MapT>

bool isEqualBase | ( | const MapT & | self,
|  | const MapBase & | other )
| inline static protected inherited

## ◆ isIdentity()

bool isIdentity | ( |  | ) | const
| inline

Return `true` if the underlying matrix is approximately an identity.

## ◆ isLinear()

bool isLinear | ( |  | ) | const
| inline override virtual

Return `true` (an AffineMap is always linear).

Implements MapBase.

## ◆ isRegistered()

bool isRegistered | ( |  | ) |
| inline static

## ◆ isScale()

bool isScale | ( |  | ) | const
| inline

Return `true` if the map is equivalent to a ScaleMap.

## ◆ isScaleTranslate()

bool isScaleTranslate | ( |  | ) | const
| inline

Return `true` if the map is equivalent to a ScaleTranslateMap.

## ◆ isType()

template<typename MapT>

bool isType | ( |  | ) | const
| inline inherited

Return `true` if this map is of concrete type `MapT` (e.g., AffineMap).

## ◆ mapType()

Name mapType | ( |  | ) |
| inline static

## ◆ operator!=()

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

## ◆ operator=()

AffineMap & operator= | ( | const AffineMap & | other | ) |
| inline

## ◆ operator==()

bool operator== | ( | const AffineMap & | other | ) | const
| inline

## ◆ postRotate()

MapBase::Ptr postRotate | ( | double | radians,
|  | Axis | axis = X_AXIS ) const
| inline override virtual

Return a MapBase::Ptr to a new map that is the result of postfixing the appropraite operation.

Implements MapBase.

## ◆ postScale()

MapBase::Ptr postScale | ( | const Vec3d & | s | ) | const
| inline override virtual

Implements MapBase.

## ◆ postShear()

MapBase::Ptr postShear | ( | double | shear,
|  | Axis | axis0,
|  | Axis | axis1 ) const
| inline override virtual

Implements MapBase.

## ◆ postTranslate()

MapBase::Ptr postTranslate | ( | const Vec3d & | t | ) | const
| inline override virtual

Implements MapBase.

## ◆ preRotate()

MapBase::Ptr preRotate | ( | double | radians,
|  | Axis | axis = X_AXIS ) const
| inline override virtual

Return a MapBase::Ptr to a new map that is the result of prepending the appropraite operation.

Implements MapBase.

## ◆ preScale()

MapBase::Ptr preScale | ( | const Vec3d & | s | ) | const
| inline override virtual

Implements MapBase.

## ◆ preShear()

MapBase::Ptr preShear | ( | double | shear,
|  | Axis | axis0,
|  | Axis | axis1 ) const
| inline override virtual

Implements MapBase.

## ◆ preTranslate()

MapBase::Ptr preTranslate | ( | const Vec3d & | t | ) | const
| inline override virtual

Implements MapBase.

## ◆ read()

void read | ( | std::istream & | is | ) |
| inline override virtual

read serialization

Implements MapBase.

## ◆ registerMap()

void registerMap | ( |  | ) |
| inline static

## ◆ str()

std::string str | ( |  | ) | const
| inline override virtual

string serialization, useful for debugging

Implements MapBase.

## ◆ type()

Name type | ( |  | ) | const
| inline override virtual

Return the name of this map's concrete type (e.g., `"AffineMap"`).

Implements MapBase.

## ◆ voxelSize() [1/2]

Vec3d voxelSize | ( |  | ) | const
| inline override virtual

Return the lengths of the images of the segments (0,0,0)-(1,0,0), (0,0,0)-(0,1,0) and (0,0,0)-(0,0,1).

Implements MapBase.

## ◆ voxelSize() [2/2]

Vec3d voxelSize | ( | const Vec3d & |  | ) | const
| inline override virtual

Implements MapBase.

## ◆ write()

void write | ( | std::ostream & | os | ) | const
| inline override virtual

write serialization

Implements MapBase.