OpenVDB  5.2.0
Public Types | Public Member Functions | Protected Member Functions | Static Protected Member Functions | List of all members
MapBase Class Referenceabstract

Abstract base class for maps. More...

#include <Maps.h>

Inherited by AffineMap, NonlinearFrustumMap, ScaleMap, ScaleTranslateMap, TranslationMap, and UnitaryMap.

Public Types

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

Public Member Functions

 MapBase (const MapBase &)=default
 
virtual ~MapBase ()=default
 
virtual SharedPtr< AffineMapgetAffineMap () const =0
 
virtual Name type () const =0
 Return the name of this map's concrete type (e.g., "AffineMap"). More...
 
template<typename MapT >
bool isType () const
 Return true if this map is of concrete type MapT (e.g., AffineMap). More...
 
virtual bool isEqual (const MapBase &other) const =0
 Return true if this map is equal to the given map. More...
 
virtual bool isLinear () const =0
 Return true if this map is linear. More...
 
virtual bool hasUniformScale () const =0
 Return true if the spacing between the image of latice is uniform in all directions. More...
 
virtual Vec3d applyMap (const Vec3d &in) const =0
 
virtual Vec3d applyInverseMap (const Vec3d &in) const =0
 
virtual Mat3d applyIJC (const Mat3d &m) const =0
 
virtual Mat3d applyIJC (const Mat3d &m, const Vec3d &v, const Vec3d &domainPos) const =0
 
virtual double determinant () const =0
 
virtual double determinant (const Vec3d &) const =0
 
virtual void read (std::istream &)=0
 
virtual void write (std::ostream &) const =0
 
virtual std::string str () const =0
 
virtual MapBase::Ptr copy () const =0
 
virtual MapBase::Ptr inverseMap () const =0
 Return a new map representing the inverse of this map. More...
 
virtual Vec3d applyIJT (const Vec3d &in) const =0
 Apply the Inverse Jacobian Transpose of this map to a vector. For a linear map this is equivalent to applying the transpose of inverse map excluding translation. More...
 
virtual Vec3d applyIJT (const Vec3d &in, const Vec3d &domainPos) const =0
 Apply the Inverse Jacobian Transpose of this map to a vector. For a linear map this is equivalent to applying the transpose of inverse map excluding translation. More...
 
virtual Vec3d voxelSize () const =0
 Method to return the local size of a voxel. When a location is specified as an argument, it is understood to be be in the domain of the map (i.e. index space) More...
 
virtual Vec3d voxelSize (const Vec3d &) const =0
 Method to return the local size of a voxel. When a location is specified as an argument, it is understood to be be in the domain of the map (i.e. index space) More...
 
virtual MapBase::Ptr preRotate (double radians, Axis axis=X_AXIS) const =0
 Methods to update the map. More...
 
virtual MapBase::Ptr preTranslate (const Vec3d &) const =0
 Methods to update the map. More...
 
virtual MapBase::Ptr preScale (const Vec3d &) const =0
 Methods to update the map. More...
 
virtual MapBase::Ptr preShear (double shear, Axis axis0, Axis axis1) const =0
 Methods to update the map. More...
 
virtual MapBase::Ptr postRotate (double radians, Axis axis=X_AXIS) const =0
 Methods to update the map. More...
 
virtual MapBase::Ptr postTranslate (const Vec3d &) const =0
 Methods to update the map. More...
 
virtual MapBase::Ptr postScale (const Vec3d &) const =0
 Methods to update the map. More...
 
virtual MapBase::Ptr postShear (double shear, Axis axis0, Axis axis1) const =0
 Methods to update the map. More...
 
virtual Vec3d applyJacobian (const Vec3d &in) const =0
 Apply the Jacobian of this map to a vector. For a linear map this is equivalent to applying the map excluding translation. More...
 
virtual Vec3d applyJacobian (const Vec3d &in, const Vec3d &domainPos) const =0
 Apply the Jacobian of this map to a vector. For a linear map this is equivalent to applying the map excluding translation. More...
 
virtual Vec3d applyInverseJacobian (const Vec3d &in) const =0
 Apply the InverseJacobian of this map to a vector. For a linear map this is equivalent to applying the map inverse excluding translation. More...
 
virtual Vec3d applyInverseJacobian (const Vec3d &in, const Vec3d &domainPos) const =0
 Apply the InverseJacobian of this map to a vector. For a linear map this is equivalent to applying the map inverse excluding translation. More...
 
virtual Vec3d applyJT (const Vec3d &in) const =0
 Apply the Jacobian transpose of this map to a vector. For a linear map this is equivalent to applying the transpose of the map excluding translation. More...
 
virtual Vec3d applyJT (const Vec3d &in, const Vec3d &domainPos) const =0
 Apply the Jacobian transpose of this map to a vector. For a linear map this is equivalent to applying the transpose of the map excluding translation. More...
 

Protected Member Functions

 MapBase ()
 

Static Protected Member Functions

template<typename MapT >
static bool isEqualBase (const MapT &self, const MapBase &other)
 

Detailed Description

Abstract base class for maps.

Member Typedef Documentation

◆ ConstPtr

using ConstPtr = SharedPtr<const MapBase>

◆ MapFactory

using MapFactory = Ptr (*)()

◆ Ptr

using Ptr = SharedPtr<MapBase>

Constructor & Destructor Documentation

◆ MapBase() [1/2]

MapBase ( const MapBase )
default

◆ ~MapBase()

virtual ~MapBase ( )
virtualdefault

◆ MapBase() [2/2]

MapBase ( )
inlineprotected

Member Function Documentation

◆ applyIJC() [1/2]

virtual Mat3d applyIJC ( const Mat3d m) const
pure virtual

◆ applyIJC() [2/2]

virtual Mat3d applyIJC ( const Mat3d m,
const Vec3d v,
const Vec3d domainPos 
) const
pure virtual

◆ applyIJT() [1/2]

virtual Vec3d applyIJT ( const Vec3d in) const
pure virtual

Apply the Inverse Jacobian Transpose of this map to a vector. For a linear map this is equivalent to applying the transpose of inverse map excluding translation.

Implemented in NonlinearFrustumMap, UnitaryMap, ScaleTranslateMap, TranslationMap, ScaleMap, and AffineMap.

◆ applyIJT() [2/2]

virtual Vec3d applyIJT ( const Vec3d in,
const Vec3d domainPos 
) const
pure virtual

Apply the Inverse Jacobian Transpose of this map to a vector. For a linear map this is equivalent to applying the transpose of inverse map excluding translation.

Implemented in NonlinearFrustumMap, UnitaryMap, ScaleTranslateMap, TranslationMap, ScaleMap, and AffineMap.

◆ applyInverseJacobian() [1/2]

virtual Vec3d applyInverseJacobian ( const Vec3d in) const
pure virtual

Apply the InverseJacobian of this map to a vector. For a linear map this is equivalent to applying the map inverse excluding translation.

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.

Implemented in NonlinearFrustumMap, UnitaryMap, ScaleTranslateMap, TranslationMap, ScaleMap, and AffineMap.

◆ applyInverseJacobian() [2/2]

virtual Vec3d applyInverseJacobian ( const Vec3d in,
const Vec3d domainPos 
) const
pure virtual

Apply the InverseJacobian of this map to a vector. For a linear map this is equivalent to applying the map inverse excluding translation.

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.

Implemented in NonlinearFrustumMap, UnitaryMap, ScaleTranslateMap, TranslationMap, ScaleMap, and AffineMap.

◆ applyInverseMap()

virtual Vec3d applyInverseMap ( const Vec3d in) const
pure virtual

◆ applyJacobian() [1/2]

virtual Vec3d applyJacobian ( const Vec3d in) const
pure virtual

Apply the Jacobian of this map to a vector. For a linear map this is equivalent to applying the map excluding translation.

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.

Implemented in NonlinearFrustumMap, UnitaryMap, ScaleTranslateMap, TranslationMap, ScaleMap, and AffineMap.

◆ applyJacobian() [2/2]

virtual Vec3d applyJacobian ( const Vec3d in,
const Vec3d domainPos 
) const
pure virtual

Apply the Jacobian of this map to a vector. For a linear map this is equivalent to applying the map excluding translation.

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.

Implemented in NonlinearFrustumMap, UnitaryMap, ScaleTranslateMap, TranslationMap, ScaleMap, and AffineMap.

◆ applyJT() [1/2]

virtual Vec3d applyJT ( const Vec3d in) const
pure virtual

Apply the Jacobian transpose of this map to a vector. For a linear map this is equivalent to applying the transpose of the map excluding translation.

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.

Implemented in NonlinearFrustumMap, UnitaryMap, ScaleTranslateMap, TranslationMap, ScaleMap, and AffineMap.

◆ applyJT() [2/2]

virtual Vec3d applyJT ( const Vec3d in,
const Vec3d domainPos 
) const
pure virtual

Apply the Jacobian transpose of this map to a vector. For a linear map this is equivalent to applying the transpose of the map excluding translation.

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.

Implemented in NonlinearFrustumMap, UnitaryMap, ScaleTranslateMap, TranslationMap, ScaleMap, and AffineMap.

◆ applyMap()

virtual Vec3d applyMap ( const Vec3d in) const
pure virtual

◆ copy()

virtual MapBase::Ptr copy ( ) const
pure virtual

◆ determinant() [1/2]

virtual double determinant ( ) const
pure virtual

◆ determinant() [2/2]

virtual double determinant ( const Vec3d ) const
pure virtual

◆ getAffineMap()

virtual SharedPtr<AffineMap> getAffineMap ( ) const
pure virtual

◆ hasUniformScale()

virtual bool hasUniformScale ( ) const
pure virtual

Return true if the spacing between the image of latice is uniform in all directions.

Implemented in NonlinearFrustumMap, UnitaryMap, ScaleTranslateMap, TranslationMap, ScaleMap, and AffineMap.

◆ inverseMap()

virtual MapBase::Ptr inverseMap ( ) const
pure virtual

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.

Implemented in NonlinearFrustumMap, UnitaryMap, UniformScaleTranslateMap, ScaleTranslateMap, TranslationMap, UniformScaleMap, ScaleMap, and AffineMap.

◆ isEqual()

virtual bool isEqual ( const MapBase other) const
pure virtual

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

Implemented in NonlinearFrustumMap, UnitaryMap, UniformScaleTranslateMap, ScaleTranslateMap, TranslationMap, UniformScaleMap, ScaleMap, and AffineMap.

◆ isEqualBase()

static bool isEqualBase ( const MapT &  self,
const MapBase other 
)
inlinestaticprotected

◆ isLinear()

virtual bool isLinear ( ) const
pure virtual

Return true if this map is linear.

Implemented in NonlinearFrustumMap, UnitaryMap, ScaleTranslateMap, TranslationMap, ScaleMap, and AffineMap.

◆ isType()

bool isType ( ) const
inline

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

◆ postRotate()

virtual MapBase::Ptr postRotate ( double  radians,
Axis  axis = X_AXIS 
) const
pure virtual

Methods to update the map.

Implemented in NonlinearFrustumMap, UnitaryMap, ScaleTranslateMap, TranslationMap, ScaleMap, and AffineMap.

◆ postScale()

virtual MapBase::Ptr postScale ( const Vec3d ) const
pure virtual

Methods to update the map.

Implemented in NonlinearFrustumMap, UnitaryMap, ScaleTranslateMap, TranslationMap, ScaleMap, and AffineMap.

◆ postShear()

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

Methods to update the map.

Implemented in NonlinearFrustumMap, UnitaryMap, ScaleTranslateMap, TranslationMap, ScaleMap, and AffineMap.

◆ postTranslate()

virtual MapBase::Ptr postTranslate ( const Vec3d ) const
pure virtual

◆ preRotate()

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

Methods to update the map.

Implemented in NonlinearFrustumMap, UnitaryMap, ScaleTranslateMap, TranslationMap, ScaleMap, and AffineMap.

◆ preScale()

virtual MapBase::Ptr preScale ( const Vec3d ) const
pure virtual

Methods to update the map.

Implemented in NonlinearFrustumMap, UnitaryMap, ScaleTranslateMap, TranslationMap, ScaleMap, and AffineMap.

◆ preShear()

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

Methods to update the map.

Implemented in NonlinearFrustumMap, UnitaryMap, ScaleTranslateMap, TranslationMap, ScaleMap, and AffineMap.

◆ preTranslate()

virtual MapBase::Ptr preTranslate ( const Vec3d ) const
pure virtual

◆ read()

virtual void read ( std::istream &  )
pure virtual

◆ str()

virtual std::string str ( ) const
pure virtual

◆ type()

virtual Name type ( ) const
pure virtual

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

Implemented in NonlinearFrustumMap, UnitaryMap, UniformScaleTranslateMap, ScaleTranslateMap, TranslationMap, UniformScaleMap, ScaleMap, and AffineMap.

◆ voxelSize() [1/2]

virtual Vec3d voxelSize ( ) const
pure virtual

Method to return the local size of a voxel. When a location is specified as an argument, it is understood to be be in the domain of the map (i.e. index space)

Implemented in NonlinearFrustumMap, UnitaryMap, ScaleTranslateMap, TranslationMap, ScaleMap, and AffineMap.

◆ voxelSize() [2/2]

virtual Vec3d voxelSize ( const Vec3d ) const
pure virtual

Method to return the local size of a voxel. When a location is specified as an argument, it is understood to be be in the domain of the map (i.e. index space)

Implemented in NonlinearFrustumMap, UnitaryMap, ScaleTranslateMap, TranslationMap, ScaleMap, and AffineMap.

◆ write()

virtual void write ( std::ostream &  ) const
pure virtual

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