HDK
|
This map is composed of three steps. First it will take a box of size (Lx X Ly X Lz) defined by a member data bounding box and map it into a frustum with near plane (1 X Ly/Lx) and prescribed depth Then this frustum is transformed by an internal second map: most often a uniform scale, but other effects can be achieved by accumulating translation, shear and rotation: these are all applied to the second map. More...
#include <Maps.h>
Public Types | |
using | Ptr = SharedPtr< NonlinearFrustumMap > |
using | ConstPtr = SharedPtr< const NonlinearFrustumMap > |
Public Types inherited from openvdb::OPENVDB_VERSION_NAME::math::MapBase | |
using | Ptr = SharedPtr< MapBase > |
using | ConstPtr = SharedPtr< const MapBase > |
using | MapFactory ) = Ptr(*)( |
Public Member Functions | |
NonlinearFrustumMap () | |
NonlinearFrustumMap (const BBoxd &bb, double taper, double depth) | |
Constructor that takes an index-space bounding box to be mapped into a frustum with a given depth and taper (defined as ratio of nearplane/farplane). More... | |
NonlinearFrustumMap (const BBoxd &bb, double taper, double depth, const MapBase::Ptr &secondMap) | |
Constructor that takes an index-space bounding box to be mapped into a frustum with a given depth and taper (defined as ratio of nearplane/farplane). More... | |
NonlinearFrustumMap (const NonlinearFrustumMap &other) | |
NonlinearFrustumMap (const Vec3d &position, const Vec3d &direction, const Vec3d &up, double aspect, double z_near, double depth, Coord::ValueType x_count, Coord::ValueType z_count) | |
Constructor from a camera frustum. More... | |
~NonlinearFrustumMap () override=default | |
MapBase::Ptr | copy () const override |
Return a MapBase::Ptr to a deep copy of this map. More... | |
MapBase::Ptr | inverseMap () const override |
Not implemented, since there is currently no map type that can represent the inverse of a frustum. More... | |
Name | type () const override |
Return NonlinearFrustumMap . More... | |
bool | isLinear () const override |
Return false (a NonlinearFrustumMap is never linear). More... | |
bool | hasUniformScale () const override |
Return false (by convention false) More... | |
bool | isIdentity () const |
Return true if the map is equivalent to an identity. More... | |
bool | isEqual (const MapBase &other) const override |
Return true if this map is equal to the given map. More... | |
bool | operator== (const NonlinearFrustumMap &other) const |
bool | operator!= (const NonlinearFrustumMap &other) const |
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 override |
Return the Jacobian of the linear second map applied to in . More... | |
Vec3d | applyJacobian (const Vec3d &in, const Vec3d &isloc) const override |
Return the Jacobian defined at isloc applied to in . 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 | applyInverseJacobian (const Vec3d &in, const Vec3d &isloc) const override |
Return the Inverse Jacobian defined at isloc of the map applied to in. More... | |
Vec3d | applyJT (const Vec3d &in, const Vec3d &isloc) const override |
Return the Jacobian Transpose of the map applied to vector in at indexloc . More... | |
Vec3d | applyJT (const Vec3d &in) const override |
Return the Jacobian Transpose of the second map applied to in . More... | |
Vec3d | applyIJT (const Vec3d &in) const override |
Return the transpose of the inverse Jacobian of the linear second map applied to in . More... | |
Vec3d | applyIJT (const Vec3d &d1_is, const Vec3d &ijk) const override |
Mat3d | applyIJC (const Mat3d &in) const override |
Return the Jacobian Curvature for the linear second map. More... | |
Mat3d | applyIJC (const Mat3d &d2_is, const Vec3d &d1_is, const Vec3d &ijk) const override |
double | determinant () const override |
Return the determinant of the Jacobian of linear second map. More... | |
double | determinant (const Vec3d &loc) const override |
Vec3d | voxelSize () const override |
Return the size of a voxel at the center of the near plane. More... | |
Vec3d | voxelSize (const Vec3d &loc) const override |
Returns the lengths of the images of the three segments from loc to loc + (1,0,0), from loc to loc + (0,1,0) and from loc to loc + (0,0,1) More... | |
AffineMap::Ptr | getAffineMap () const override |
void | setTaper (double t) |
set the taper value, the ratio of nearplane width / far plane width More... | |
double | getTaper () const |
Return the taper value. More... | |
void | setDepth (double d) |
set the frustum depth: distance between near and far plane = frustm depth * frustm x-width More... | |
double | getDepth () const |
Return the unscaled frustm depth. More... | |
double | getGamma () const |
const BBoxd & | getBBox () const |
Return the bounding box that defines the frustum in pre-image space. More... | |
const AffineMap & | secondMap () const |
Return MapBase::Ptr& to the second map. More... | |
bool | isValid () const |
bool | hasSimpleAffine () const |
Return true if the second map is a uniform scale, Rotation and translation. 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 debuging 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 given rotation to the linear part of this map. More... | |
MapBase::Ptr | preTranslate (const Vec3d &t) const override |
Return a MapBase::Ptr to a new map that is the result of prepending the given translation to the linear part of this map. More... | |
MapBase::Ptr | preScale (const Vec3d &s) const override |
Return a MapBase::Ptr to a new map that is the result of prepending the given scale to the linear part of this map. 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 given shear to the linear part of this map. 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 appending the given rotation to the linear part of this map. More... | |
MapBase::Ptr | postTranslate (const Vec3d &t) const override |
Return a MapBase::Ptr to a new map that is the result of appending the given translation to the linear part of this map. More... | |
MapBase::Ptr | postScale (const Vec3d &s) const override |
Return a MapBase::Ptr to a new map that is the result of appending the given scale to the linear part of this map. 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 appending the given shear to the linear part of this map. More... | |
Public Member Functions inherited from openvdb::OPENVDB_VERSION_NAME::math::MapBase | |
MapBase (const MapBase &)=default | |
virtual | ~MapBase ()=default |
template<typename MapT > | |
bool | isType () const |
Return true if this map is of concrete type MapT (e.g., AffineMap). More... | |
Static Public Member Functions | |
static MapBase::Ptr | create () |
Return a MapBase::Ptr to a new NonlinearFrustumMap. More... | |
static bool | isRegistered () |
static void | registerMap () |
static Name | mapType () |
Return NonlinearFrustumMap . More... | |
Additional Inherited Members | |
Protected Member Functions inherited from openvdb::OPENVDB_VERSION_NAME::math::MapBase | |
MapBase () | |
Static Protected Member Functions inherited from openvdb::OPENVDB_VERSION_NAME::math::MapBase | |
template<typename MapT > | |
static bool | isEqualBase (const MapT &self, const MapBase &other) |
This map is composed of three steps. First it will take a box of size (Lx X Ly X Lz) defined by a member data bounding box and map it into a frustum with near plane (1 X Ly/Lx) and prescribed depth Then this frustum is transformed by an internal second map: most often a uniform scale, but other effects can be achieved by accumulating translation, shear and rotation: these are all applied to the second map.
|
inline |
|
inline |
|
inline |
Constructor that takes an index-space bounding box to be mapped into a frustum with a given depth and taper (defined as ratio of nearplane/farplane).
This frustum is further modifed by the secondMap, intended to be a simple translation and rotation and uniform scale
|
inline |
|
inline |
Constructor from a camera frustum.
position | the tip of the frustum (i.e., the camera's position). |
direction | a vector pointing from position toward the near plane. |
up | a non-unit vector describing the direction and extent of the frustum's intersection on the near plane. Together, up must be orthogonal to direction. |
aspect | the aspect ratio of the frustum intersection with near plane defined as width / height |
z_near,depth | the distance from position along direction to the near and far planes of the frustum. |
x_count | the number of voxels, aligned with left, across the face of the frustum |
z_count | the number of voxels, aligned with direction, between the near and far planes |
|
overridedefault |
|
inlineoverridevirtual |
Return the Jacobian Curvature for the linear second map.
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
Return the Jacobian Curvature: all the second derivatives in range space
d2_is | second derivative matrix computed in index space |
d1_is | gradient computed in index space |
ijk | the index space location where the result is computed |
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
Return the transpose of the inverse Jacobian of the linear second map applied to in
.
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
Return the transpose of the inverse Jacobain (at locW
applied to in
. ijk
is the location in the pre-image space (e.g. index space)
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
Return the Inverse Jacobian of the map applied to in (i.e. inverse map with out translation)
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
Return the Inverse Jacobian defined at isloc
of the map applied to in.
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
Return the pre-image of in
under the map.
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
Return the Jacobian of the linear second map applied to in
.
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
Return the Jacobian defined at isloc
applied to in
.
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
Return the Jacobian Transpose of the map applied to vector in
at indexloc
.
This tranforms range-space gradients to domain-space gradients.
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
Return the Jacobian Transpose of the second map applied to in
.
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
Return the image of in
under the map.
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
Return a MapBase::Ptr to a deep copy of this map.
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlinestatic |
Return a MapBase::Ptr to a new NonlinearFrustumMap.
|
inlineoverridevirtual |
Return the determinant of the Jacobian of linear second map.
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
Return the determinate of the Jacobian evaluated at loc
loc
is a location in the pre-image space (e.g., index space)
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineoverridevirtual |
Return false
(by convention false)
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
Not implemented, since there is currently no map type that can represent the inverse of a frustum.
NotImplementedError |
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
Return true
if this map is equal to the given map.
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inline |
|
inlineoverridevirtual |
Return false
(a NonlinearFrustumMap is never linear).
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlinestatic |
|
inline |
|
inlinestatic |
Return NonlinearFrustumMap
.
|
inline |
|
inline |
|
inlineoverridevirtual |
Return a MapBase::Ptr to a new map that is the result of appending the given rotation to the linear part of this map.
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
Return a MapBase::Ptr to a new map that is the result of appending the given scale to the linear part of this map.
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
Return a MapBase::Ptr to a new map that is the result of appending the given shear to the linear part of this map.
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
Return a MapBase::Ptr to a new map that is the result of appending the given translation to the linear part of this map.
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
Return a MapBase::Ptr to a new map that is the result of prepending the given rotation to the linear part of this map.
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
Return a MapBase::Ptr to a new map that is the result of prepending the given scale to the linear part of this map.
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
Return a MapBase::Ptr to a new map that is the result of prepending the given shear to the linear part of this map.
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
Return a MapBase::Ptr to a new map that is the result of prepending the given translation to the linear part of this map.
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
read serialization
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlinestatic |
|
inline |
Return MapBase::Ptr& to the second map.
|
inline |
|
inline |
|
inlineoverridevirtual |
string serialization, useful for debuging
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
Return NonlinearFrustumMap
.
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
Return the size of a voxel at the center of the near plane.
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
Returns the lengths of the images of the three segments from loc to loc + (1,0,0), from loc to loc + (0,1,0) and from loc to loc + (0,0,1)
loc | a location in the pre-image space (e.g., index space) |
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.
|
inlineoverridevirtual |
write serialization
Implements openvdb::OPENVDB_VERSION_NAME::math::MapBase.