OpenVDB  12.0.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 <openvdb/math/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

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

Constructor & Destructor Documentation

MapBase ( const MapBase )
default
virtual ~MapBase ( )
virtualdefault
MapBase ( )
inlineprotected

Member Function Documentation

virtual Mat3d applyIJC ( const Mat3d m) const
pure virtual
virtual Mat3d applyIJC ( const Mat3d m,
const Vec3d v,
const Vec3d domainPos 
) const
pure virtual
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.

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.

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.

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.

virtual Vec3d applyInverseMap ( const Vec3d in) const
pure virtual
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.

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.

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.

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.

virtual Vec3d applyMap ( const Vec3d in) const
pure virtual
virtual MapBase::Ptr copy ( ) const
pure virtual
virtual double determinant ( ) const
pure virtual
virtual double determinant ( const Vec3d ) const
pure virtual
virtual SharedPtr<AffineMap> getAffineMap ( ) const
pure virtual
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.

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.

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.

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

Return true if this map is linear.

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

bool isType ( ) const
inline

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

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.

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

Methods to update the map.

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

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.

virtual MapBase::Ptr postTranslate ( const Vec3d ) const
pure virtual
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.

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

Methods to update the map.

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

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.

virtual MapBase::Ptr preTranslate ( const Vec3d ) const
pure virtual
virtual void read ( std::istream &  )
pure virtual
virtual std::string str ( ) const
pure virtual
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.

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.

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.

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