OpenVDB  12.0.0
Public Types | Public Member Functions | Static Public Member Functions | Static Protected Member Functions | List of all members
AffineMap Class Referencefinal

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

#include <openvdb/math/Maps.h>

Inherits MapBase.

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

Static Public Member Functions

static MapBase::Ptr create ()
 Return a MapBase::Ptr to a new AffineMap. More...
 
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

using ConstPtr = SharedPtr<const AffineMap>
using MapFactory = Ptr (*)(
inherited

Constructor & Destructor Documentation

AffineMap ( )
inline
AffineMap ( const Mat3d m)
inline
AffineMap ( const Mat4d m)
inline
AffineMap ( const AffineMap other)
inline
AffineMap ( const AffineMap first,
const AffineMap second 
)
inline

constructor that merges the matrixes for two affine maps

~AffineMap ( )
overridedefault

Member Function Documentation

void accumPostRotation ( Axis  axis,
double  radians 
)
inline

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

void accumPostScale ( const Vec3d v)
inline

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

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

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

void accumPostTranslation ( const Vec3d v)
inline

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

void accumPreRotation ( Axis  axis,
double  radians 
)
inline

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

void accumPreScale ( const Vec3d v)
inline

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

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

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

void accumPreTranslation ( const Vec3d v)
inline

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

Mat3d applyIJC ( const Mat3d m) const
inlineoverridevirtual

Return the Jacobian Curvature: zero for a linear map.

Implements MapBase.

Mat3d applyIJC ( const Mat3d in,
const Vec3d ,
const Vec3d  
) const
inlineoverridevirtual

Implements MapBase.

Vec3d applyIJT ( const Vec3d in,
const Vec3d  
) const
inlineoverridevirtual

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

Implements MapBase.

Vec3d applyIJT ( const Vec3d in) const
inlineoverridevirtual

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

Implements MapBase.

Vec3d applyInverseJacobian ( const Vec3d in,
const Vec3d  
) const
inlineoverridevirtual

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

Implements MapBase.

Vec3d applyInverseJacobian ( const Vec3d in) const
inlineoverridevirtual

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

Implements MapBase.

Vec3d applyInverseMap ( const Vec3d in) const
inlineoverridevirtual

Return the pre-image of in under the map.

Implements MapBase.

Vec3d applyJacobian ( const Vec3d in,
const Vec3d  
) const
inlineoverridevirtual

Return the Jacobian of the map applied to in.

Implements MapBase.

Vec3d applyJacobian ( const Vec3d in) const
inlineoverridevirtual

Return the Jacobian of the map applied to in.

Implements MapBase.

Vec3d applyJT ( const Vec3d in,
const Vec3d  
) const
inlineoverridevirtual

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

Implements MapBase.

Vec3d applyJT ( const Vec3d in) const
inlineoverridevirtual

Return the Jacobian Transpose of the map applied to in.

Implements MapBase.

Vec3d applyMap ( const Vec3d in) const
inlineoverridevirtual

Return the image of in under the map.

Implements MapBase.

MapBase::Ptr copy ( ) const
inlineoverridevirtual

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

Implements MapBase.

static MapBase::Ptr create ( )
inlinestatic

Return a MapBase::Ptr to a new AffineMap.

SharedPtr<FullyDecomposedMap> createDecomposedMap ( )
inline

on-demand decomposition of the affine map

double determinant ( const Vec3d ) const
inlineoverridevirtual

Return the determinant of the Jacobian, ignores argument.

Implements MapBase.

double determinant ( ) const
inlineoverridevirtual

Return the determinant of the Jacobian.

Implements MapBase.

AffineMap::Ptr getAffineMap ( ) const
inlineoverridevirtual

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

Implements MapBase.

const Mat3d& getConstJacobianInv ( ) const
inline
const Mat4d& getConstMat4 ( ) const
inline
Mat4d getMat4 ( ) const
inline

Return the matrix representation of this AffineMap.

bool hasUniformScale ( ) const
inlineoverridevirtual

Return false ( test if this is unitary with translation )

Implements MapBase.

AffineMap::Ptr inverse ( ) const
inline

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

MapBase::Ptr inverseMap ( ) const
inlineoverridevirtual

Return a new map representing the inverse of this map.

Exceptions
NotImplementedErrorif 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.

bool isDiagonal ( ) const
inline

Return true if the underylying matrix is diagonal.

bool isEqual ( const MapBase other) const
inlineoverridevirtual

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

Implements MapBase.

static bool isEqualBase ( const MapT &  self,
const MapBase other 
)
inlinestaticprotectedinherited
bool isIdentity ( ) const
inline

Return true if the underlying matrix is approximately an identity.

bool isLinear ( ) const
inlineoverridevirtual

Return true (an AffineMap is always linear).

Implements MapBase.

static bool isRegistered ( )
inlinestatic
bool isScale ( ) const
inline

Return true if the map is equivalent to a ScaleMap.

bool isScaleTranslate ( ) const
inline

Return true if the map is equivalent to a ScaleTranslateMap.

bool isType ( ) const
inlineinherited

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

static Name mapType ( )
inlinestatic
bool operator!= ( const AffineMap other) const
inline
AffineMap& operator= ( const AffineMap other)
inline
bool operator== ( const AffineMap other) const
inline
MapBase::Ptr postRotate ( double  radians,
Axis  axis = X_AXIS 
) const
inlineoverridevirtual

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

Implements MapBase.

MapBase::Ptr postScale ( const Vec3d s) const
inlineoverridevirtual

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

Implements MapBase.

MapBase::Ptr postShear ( double  shear,
Axis  axis0,
Axis  axis1 
) const
inlineoverridevirtual

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

Implements MapBase.

MapBase::Ptr postTranslate ( const Vec3d t) const
inlineoverridevirtual

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

Implements MapBase.

MapBase::Ptr preRotate ( double  radians,
Axis  axis = X_AXIS 
) const
inlineoverridevirtual

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

Implements MapBase.

MapBase::Ptr preScale ( const Vec3d s) const
inlineoverridevirtual

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

Implements MapBase.

MapBase::Ptr preShear ( double  shear,
Axis  axis0,
Axis  axis1 
) const
inlineoverridevirtual

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

Implements MapBase.

MapBase::Ptr preTranslate ( const Vec3d t) const
inlineoverridevirtual

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

Implements MapBase.

void read ( std::istream &  is)
inlineoverridevirtual

read serialization

Implements MapBase.

static void registerMap ( )
inlinestatic
std::string str ( ) const
inlineoverridevirtual

string serialization, useful for debugging

Implements MapBase.

Name type ( ) const
inlineoverridevirtual

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

Implements MapBase.

Vec3d voxelSize ( ) const
inlineoverridevirtual

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.

Vec3d voxelSize ( const Vec3d ) const
inlineoverridevirtual

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.

void write ( std::ostream &  os) const
inlineoverridevirtual

write serialization

Implements MapBase.