HDK
|
Abstract base class for maps. More...
#include <Maps.h>
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< AffineMap > | getAffineMap () 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) |
using openvdb::OPENVDB_VERSION_NAME::math::MapBase::MapFactory = Ptr (*)( |
|
default |
|
virtualdefault |
|
inlineprotected |
|
pure virtual |
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
pure virtual |
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
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 openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
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 openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
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.
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
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.
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
pure virtual |
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
pure virtual |
Apply the Jacobian of this map to a vector. For a linear map this is equivalent to applying the map excluding translation.
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
pure virtual |
Apply the Jacobian of this map to a vector. For a linear map this is equivalent to applying the map excluding translation.
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
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.
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
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.
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
pure virtual |
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
pure virtual |
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::UniformScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::UniformScaleMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
pure virtual |
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
pure virtual |
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
pure virtual |
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
pure virtual |
Return true
if the spacing between the image of latice is uniform in all directions.
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
pure virtual |
Return a new map representing the inverse of this map.
NotImplementedError | if the map is a NonlinearFrustumMap. |
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::UniformScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::UniformScaleMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
pure virtual |
Return true
if this map is equal to the given map.
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::UniformScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::UniformScaleMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
inlinestaticprotected |
|
pure virtual |
Return true
if this map is linear.
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
inline |
|
pure virtual |
Methods to update the map.
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
pure virtual |
Methods to update the map.
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
pure virtual |
Methods to update the map.
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
pure virtual |
Methods to update the map.
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::UniformScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::UniformScaleMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
pure virtual |
Methods to update the map.
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
pure virtual |
Methods to update the map.
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
pure virtual |
Methods to update the map.
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
pure virtual |
Methods to update the map.
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::UniformScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::UniformScaleMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
pure virtual |
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
pure virtual |
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
pure virtual |
Return the name of this map's concrete type (e.g., "AffineMap"
).
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::UniformScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::UniformScaleMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
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 openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
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 openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.
|
pure virtual |
Implemented in openvdb::OPENVDB_VERSION_NAME::math::NonlinearFrustumMap, openvdb::OPENVDB_VERSION_NAME::math::UnitaryMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleTranslateMap, openvdb::OPENVDB_VERSION_NAME::math::TranslationMap, openvdb::OPENVDB_VERSION_NAME::math::ScaleMap, and openvdb::OPENVDB_VERSION_NAME::math::AffineMap.