HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
openvdb::OPENVDB_VERSION_NAME::math Namespace Reference

Namespaces

 internal
 
 mat3_internal
 
 pcg
 

Classes

class  BBox
 Axis-aligned bounding box. More...
 
class  Coord
 Signed (x, y, z) 32-bit integer coordinates. More...
 
class  CoordBBox
 Axis-aligned bounding box of signed integer coordinates. More...
 
class  DDA
 A Digital Differential Analyzer specialized for OpenVDB grids. More...
 
struct  LevelSetHDDA
 Helper class that implements Hierarchical Digital Differential Analyzers and is specialized for ray intersections with level sets. More...
 
struct  LevelSetHDDA< TreeT,-1 >
 Specialization of Hierarchical Digital Differential Analyzer class that intersects a ray against the voxels of a level set. More...
 
class  VolumeHDDA
 Helper class that implements Hierarchical Digital Differential Analyzers for ray intersections against a generic volume. More...
 
class  VolumeHDDA< TreeT, RayT, 0 >
 Specialization of Hierarchical Digital Differential Analyzer class that intersects against the leafs or tiles of a generic volume. More...
 
struct  D1
 
struct  D1< CD_2NDT >
 
struct  D1< CD_2ND >
 
struct  D1< CD_4TH >
 
struct  D1< CD_6TH >
 
struct  D1< FD_1ST >
 
struct  D1< FD_2ND >
 
struct  D1< FD_3RD >
 
struct  D1< BD_1ST >
 
struct  D1< BD_2ND >
 
struct  D1< BD_3RD >
 
struct  D1< FD_WENO5 >
 
struct  D1< FD_HJWENO5 >
 
struct  D1< BD_WENO5 >
 
struct  D1< BD_HJWENO5 >
 
struct  D1Vec
 
struct  D1Vec< CD_2NDT >
 
struct  D1Vec< CD_2ND >
 
struct  D1Vec< CD_4TH >
 
struct  D1Vec< CD_6TH >
 
struct  D2
 
struct  D2< CD_SECOND >
 
struct  D2< CD_FOURTH >
 
struct  D2< CD_SIXTH >
 
class  CompoundMap
 Creates the composition of two maps, each of which could be a composition. In the case that each component of the composition classified as linear an acceleration AffineMap is stored. More...
 
struct  is_linear
 Map traits. More...
 
struct  is_linear< AffineMap >
 
struct  is_linear< ScaleMap >
 
struct  is_linear< UniformScaleMap >
 
struct  is_linear< UnitaryMap >
 
struct  is_linear< TranslationMap >
 
struct  is_linear< ScaleTranslateMap >
 
struct  is_linear< UniformScaleTranslateMap >
 
struct  is_linear< CompoundMap< T1, T2 > >
 
struct  is_uniform_scale
 
struct  is_uniform_scale< UniformScaleMap >
 
struct  is_uniform_scale_translate
 
struct  is_uniform_scale_translate< TranslationMap >
 
struct  is_uniform_scale_translate< UniformScaleTranslateMap >
 
struct  is_scale
 
struct  is_scale< ScaleMap >
 
struct  is_scale_translate
 
struct  is_scale_translate< ScaleTranslateMap >
 
struct  is_uniform_diagonal_jacobian
 
struct  is_diagonal_jacobian
 
class  MapBase
 Abstract base class for maps. More...
 
class  MapRegistry
 Threadsafe singleton object for accessing the map type-name dictionary. Associates a map type-name with a factory function. More...
 
class  AffineMap
 A general linear transform using homogeneous coordinates to perform rotation, scaling, shear and translation. More...
 
class  ScaleMap
 A specialized Affine transform that scales along the principal axis the scaling need not be uniform in the three-directions. More...
 
class  UniformScaleMap
 A specialized Affine transform that scales along the principal axis the scaling is uniform in the three-directions. More...
 
class  TranslationMap
 A specialized linear transform that performs a translation. More...
 
class  ScaleTranslateMap
 A specialized Affine transform that scales along the principal axis the scaling need not be uniform in the three-directions, and then translates the result. More...
 
class  UniformScaleTranslateMap
 A specialized Affine transform that uniformaly scales along the principal axis and then translates the result. More...
 
class  UnitaryMap
 A specialized linear transform that performs a unitary maping i.e. rotation and or reflection. More...
 
class  NonlinearFrustumMap
 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...
 
class  Mat
 
class  Quat
 
class  Vec3
 
class  Mat4
 4x4 -matrix class. More...
 
class  Mat3
 3x3 matrix class. More...
 
class  Vec4
 
struct  Tolerance
 Tolerance for floating-point comparison. More...
 
struct  Tolerance< float >
 
struct  Tolerance< double >
 
struct  Delta
 Delta for small floating-point offsets. More...
 
struct  Delta< float >
 
struct  Delta< double >
 
class  Rand01
 Simple generator of random numbers over the range [0, 1) More...
 
class  RandInt
 Simple random integer generator. More...
 
struct  promote
 
struct  is_vec3d
 
struct  is_vec3d< Vec3d >
 
struct  is_double
 
struct  is_double< double >
 
struct  MapAdapter
 Adapter to associate a map with a world-space operator, giving it the same call signature as an index-space operator. More...
 
struct  ISOpMagnitude
 Adapter for vector-valued index-space operators to return the vector magnitude. More...
 
struct  OpMagnitude
 Adapter for vector-valued world-space operators to return the vector magnitude. More...
 
struct  ISGradient
 Gradient operators defined in index space of various orders. More...
 
struct  BIAS_SCHEME
 
struct  BIAS_SCHEME< FIRST_BIAS >
 
struct  BIAS_SCHEME< SECOND_BIAS >
 
struct  BIAS_SCHEME< THIRD_BIAS >
 
struct  BIAS_SCHEME< WENO5_BIAS >
 
struct  BIAS_SCHEME< HJWENO5_BIAS >
 
struct  ISGradientBiased
 Biased Gradient Operators, using upwinding defined by the Vec3Bias input. More...
 
struct  ISGradientNormSqrd
 
struct  ISLaplacian
 Laplacian defined in index space, using various center-difference stencils. More...
 
struct  ISLaplacian< CD_SECOND >
 
struct  ISLaplacian< CD_FOURTH >
 
struct  ISLaplacian< CD_SIXTH >
 
struct  ISDivergence
 Divergence operator defined in index space using various first derivative schemes. More...
 
struct  ISCurl
 Curl operator defined in index space using various first derivative schemes. More...
 
struct  ISMeanCurvature
 Compute the mean curvature in index space. More...
 
struct  Gradient
 Center difference gradient operators, defined with respect to the range-space of the map. More...
 
struct  Gradient< TranslationMap, DiffScheme >
 
struct  Gradient< UniformScaleMap, CD_2ND >
 
struct  Gradient< UniformScaleTranslateMap, CD_2ND >
 
struct  Gradient< ScaleMap, CD_2ND >
 
struct  Gradient< ScaleTranslateMap, CD_2ND >
 
struct  GradientBiased
 Biased gradient operators, defined with respect to the range-space of the map. More...
 
struct  GradientNormSqrd
 
struct  GradientNormSqrd< UniformScaleMap, GradScheme >
 Partial template specialization of GradientNormSqrd. More...
 
struct  GradientNormSqrd< UniformScaleTranslateMap, GradScheme >
 Partial template specialization of GradientNormSqrd. More...
 
struct  Divergence
 Compute the divergence of a vector-valued grid using differencing of various orders, the result defined with respect to the range-space of the map. More...
 
struct  Divergence< TranslationMap, DiffScheme >
 
struct  Divergence< UniformScaleMap, DiffScheme >
 
struct  Divergence< UniformScaleTranslateMap, DiffScheme >
 
struct  Divergence< UniformScaleMap, CD_2ND >
 
struct  Divergence< UniformScaleTranslateMap, CD_2ND >
 
struct  Divergence< ScaleMap, DiffScheme >
 
struct  Divergence< ScaleTranslateMap, DiffScheme >
 
struct  Divergence< ScaleMap, CD_2ND >
 
struct  Divergence< ScaleTranslateMap, CD_2ND >
 
struct  Curl
 Compute the curl of a vector-valued grid using differencing of various orders in the space defined by the range of the map. More...
 
struct  Curl< UniformScaleMap, DiffScheme >
 Partial template specialization of Curl. More...
 
struct  Curl< UniformScaleTranslateMap, DiffScheme >
 Partial template specialization of Curl. More...
 
struct  Curl< UniformScaleMap, CD_2ND >
 Full template specialization of Curl. More...
 
struct  Curl< UniformScaleTranslateMap, CD_2ND >
 Full template specialization of Curl. More...
 
struct  Laplacian
 Compute the Laplacian at a given location in a grid using finite differencing of various orders. The result is defined in the range of the map. More...
 
struct  Laplacian< TranslationMap, DiffScheme >
 
struct  Laplacian< UnitaryMap, DiffScheme >
 
struct  Laplacian< UniformScaleMap, DiffScheme >
 
struct  Laplacian< UniformScaleTranslateMap, DiffScheme >
 
struct  Laplacian< ScaleMap, DiffScheme >
 
struct  Laplacian< ScaleTranslateMap, DiffScheme >
 
struct  CPT
 Compute the closest-point transform to a level set. More...
 
struct  CPT_RANGE
 Compute the closest-point transform to a level set. More...
 
struct  MeanCurvature
 Compute the mean curvature. More...
 
struct  MeanCurvature< TranslationMap, DiffScheme2, DiffScheme1 >
 
struct  MeanCurvature< UniformScaleMap, DiffScheme2, DiffScheme1 >
 
struct  MeanCurvature< UniformScaleTranslateMap, DiffScheme2, DiffScheme1 >
 
class  GenericMap
 A wrapper that holds a MapBase::ConstPtr and exposes a reduced set of functionality needed by the mathematical operators. More...
 
class  QuantizedUnitVec
 Unit vector occupying only 16 bits. More...
 
class  Ray
 
class  MinMax
 Templated class to compute the minimum and maximum values. More...
 
class  Extrema
 This class computes the minimum and maximum values of a population of floating-point values. More...
 
class  Stats
 This class computes statistics (minimum value, maximum value, mean, variance and standard deviation) of a population of floating-point values. More...
 
class  Histogram
 This class computes a histogram, with a fixed interval width, of a population of floating-point values. More...
 
class  BaseStencil
 
class  SevenPointStencil
 
class  BoxStencil
 
class  SecondOrderDenseStencil
 
class  ThirteenPointStencil
 
class  FourthOrderDenseStencil
 
class  NineteenPointStencil
 
class  SixthOrderDenseStencil
 
class  GradStencil
 
class  WenoStencil
 This is a special 19-point stencil that supports optimal fifth-order WENO upwinding, second-order central differencing, Laplacian, and zero-crossing test. More...
 
class  CurvatureStencil
 
class  DenseStencil
 Dense stencil of a given width. More...
 
class  Transform
 
struct  Conversion
 Dummy class for tag dispatch of conversion constructors. More...
 
class  Tuple
 
class  Mat2
 
class  Vec2
 

Typedefs

using UnitaryAndTranslationMap = CompoundMap< UnitaryMap, TranslationMap >
 
using SpectralDecomposedMap = CompoundMap< CompoundMap< UnitaryMap, ScaleMap >, UnitaryMap >
 
using SymmetricMap = SpectralDecomposedMap
 
using FullyDecomposedMap = CompoundMap< SymmetricMap, UnitaryAndTranslationMap >
 
using PolarDecomposedMap = CompoundMap< SymmetricMap, UnitaryMap >
 
using Mat3s = Mat3< float >
 
using Mat3d = Mat3< double >
 
using Mat3f = Mat3d
 
using Mat4s = Mat4< float >
 
using Mat4d = Mat4< double >
 
using Mat4f = Mat4d
 
using Random01 = Rand01< double, std::mt19937 >
 
using RandomInt = RandInt< int, std::mt19937 >
 
using Quats = Quat< float >
 
using Quatd = Quat< double >
 
using Vec2i = Vec2< int32_t >
 
using Vec2ui = Vec2< uint32_t >
 
using Vec2s = Vec2< float >
 
using Vec2d = Vec2< double >
 
using Vec3i = Vec3< int32_t >
 
using Vec3ui = Vec3< uint32_t >
 
using Vec3s = Vec3< float >
 
using Vec3d = Vec3< double >
 
using Vec4i = Vec4< int32_t >
 
using Vec4ui = Vec4< uint32_t >
 
using Vec4s = Vec4< float >
 
using Vec4d = Vec4< double >
 
using half = internal::half
 

Enumerations

enum  DScheme {
  UNKNOWN_DS = -1, CD_2NDT = 0, CD_2ND, CD_4TH,
  CD_6TH, FD_1ST, FD_2ND, FD_3RD,
  BD_1ST, BD_2ND, BD_3RD, FD_WENO5,
  BD_WENO5, FD_HJWENO5, BD_HJWENO5
}
 Different discrete schemes used in the first derivatives. More...
 
enum  { NUM_DS_SCHEMES = BD_HJWENO5 + 1 }
 
enum  DDScheme { UNKNOWN_DD = -1, CD_SECOND = 0, CD_FOURTH, CD_SIXTH }
 Different discrete schemes used in the second derivatives. More...
 
enum  { NUM_DD_SCHEMES = CD_SIXTH + 1 }
 
enum  BiasedGradientScheme {
  UNKNOWN_BIAS = -1, FIRST_BIAS = 0, SECOND_BIAS, THIRD_BIAS,
  WENO5_BIAS, HJWENO5_BIAS
}
 Biased Gradients are limited to non-centered differences. More...
 
enum  { NUM_BIAS_SCHEMES = HJWENO5_BIAS + 1 }
 
enum  TemporalIntegrationScheme { UNKNOWN_TIS = -1, TVD_RK1, TVD_RK2, TVD_RK3 }
 Temporal integration schemes. More...
 
enum  { NUM_TEMPORAL_SCHEMES = TVD_RK3 + 1 }
 
enum  Axis { X_AXIS = 0, Y_AXIS = 1, Z_AXIS = 2 }
 
enum  RotationOrder {
  XYZ_ROTATION = 0, XZY_ROTATION, YXZ_ROTATION, YZX_ROTATION,
  ZXY_ROTATION, ZYX_ROTATION, XZX_ROTATION, ZXZ_ROTATION
}
 

Functions

template<typename Vec3T >
std::ostream & operator<< (std::ostream &os, const BBox< Vec3T > &b)
 
std::ostream & operator<< (std::ostream &os, const Coord &xyz)
 
Coord Abs (const Coord &xyz)
 
std::ostream & operator<< (std::ostream &os, const CoordBBox &b)
 
template<typename RayT , Index Log2Dim>
std::ostream & operator<< (std::ostream &os, const DDA< RayT, Log2Dim > &dda)
 Output streaming of the Ray class. More...
 
std::string dsSchemeToString (DScheme dss)
 
DScheme stringToDScheme (const std::string &s)
 
std::string dsSchemeToMenuName (DScheme dss)
 
std::string biasedGradientSchemeToString (BiasedGradientScheme bgs)
 
BiasedGradientScheme stringToBiasedGradientScheme (const std::string &s)
 
std::string biasedGradientSchemeToMenuName (BiasedGradientScheme bgs)
 
std::string temporalIntegrationSchemeToString (TemporalIntegrationScheme tis)
 
TemporalIntegrationScheme stringToTemporalIntegrationScheme (const std::string &s)
 
std::string temporalIntegrationSchemeToMenuName (TemporalIntegrationScheme tis)
 
template<typename ValueType >
ValueType WENO5 (const ValueType &v1, const ValueType &v2, const ValueType &v3, const ValueType &v4, const ValueType &v5, float scale2=0.01f)
 Implementation of nominally fifth-order finite-difference WENO. More...
 
template<typename Real >
Real GodunovsNormSqrd (bool isOutside, Real dP_xm, Real dP_xp, Real dP_ym, Real dP_yp, Real dP_zm, Real dP_zp)
 
template<typename Real >
Real GodunovsNormSqrd (bool isOutside, const Vec3< Real > &gradient_m, const Vec3< Real > &gradient_p)
 
OPENVDB_API SharedPtr
< SymmetricMap
createSymmetricMap (const Mat3d &m)
 Utility methods. More...
 
OPENVDB_API SharedPtr
< FullyDecomposedMap
createFullyDecomposedMap (const Mat4d &m)
 General decomposition of a Matrix into a Unitary (e.g. rotation) following a Symmetric (e.g. stretch & shear) More...
 
OPENVDB_API SharedPtr
< PolarDecomposedMap
createPolarDecomposedMap (const Mat3d &m)
 Decomposes a general linear into translation following polar decomposition. More...
 
OPENVDB_API SharedPtr< MapBasesimplify (SharedPtr< AffineMap > affine)
 reduces an AffineMap to a ScaleMap or a ScaleTranslateMap when it can More...
 
OPENVDB_API Mat4d approxInverse (const Mat4d &mat)
 Returns the left pseudoInverse of the input matrix when the 3x3 part is symmetric otherwise it zeros the 3x3 and reverses the translation. More...
 
template<class MatType >
MatType rotation (const Quat< typename MatType::value_type > &q, typename MatType::value_type eps=static_cast< typename MatType::value_type >(1.0e-8))
 Return the rotation matrix specified by the given quaternion. More...
 
template<class MatType >
MatType rotation (Axis axis, typename MatType::value_type angle)
 Return a matrix for rotation by angle radians about the given axis. More...
 
template<class MatType >
MatType rotation (const Vec3< typename MatType::value_type > &_axis, typename MatType::value_type angle)
 Return a matrix for rotation by angle radians about the given axis. More...
 
template<class MatType >
Vec3< typename
MatType::value_type > 
eulerAngles (const MatType &mat, RotationOrder rotationOrder, typename MatType::value_type eps=static_cast< typename MatType::value_type >(1.0e-8))
 Return the Euler angles composing the given rotation matrix. More...
 
template<typename MatType , typename ValueType1 , typename ValueType2 >
MatType rotation (const Vec3< ValueType1 > &_v1, const Vec3< ValueType2 > &_v2, typename MatType::value_type eps=static_cast< typename MatType::value_type >(1.0e-8))
 Return a rotation matrix that maps v1 onto v2 about the cross product of v1 and v2. More...
 
template<class MatType >
MatType scale (const Vec3< typename MatType::value_type > &s)
 Return a matrix that scales by s. More...
 
template<class MatType >
Vec3< typename
MatType::value_type > 
getScale (const MatType &mat)
 Return a Vec3 representing the lengths of the passed matrix's upper 3×3's rows. More...
 
template<class MatType >
MatType unit (const MatType &mat, typename MatType::value_type eps=1.0e-8)
 Return a copy of the given matrix with its upper 3×3 rows normalized. More...
 
template<class MatType >
MatType unit (const MatType &in, typename MatType::value_type eps, Vec3< typename MatType::value_type > &scaling)
 Return a copy of the given matrix with its upper 3×3 rows normalized, and return the length of each of these rows in scaling. More...
 
template<class MatType >
MatType shear (Axis axis0, Axis axis1, typename MatType::value_type shear)
 Set the matrix to a shear along axis0 by a fraction of axis1. More...
 
template<class MatType >
MatType skew (const Vec3< typename MatType::value_type > &skew)
 Return a matrix as the cross product of the given vector. More...
 
template<class MatType >
MatType aim (const Vec3< typename MatType::value_type > &direction, const Vec3< typename MatType::value_type > &vertical)
 Return an orientation matrix such that z points along direction, and y is along the direction / vertical plane. More...
 
template<class MatType >
MatType snapMatBasis (const MatType &source, Axis axis, const Vec3< typename MatType::value_type > &direction)
 This function snaps a specific axis to a specific direction, preserving scaling. More...
 
template<class MatType >
MatType & padMat4 (MatType &dest)
 Write 0s along Mat4's last row and column, and a 1 on its diagonal. More...
 
template<typename MatType >
void sqrtSolve (const MatType &aA, MatType &aB, double aTol=0.01)
 Solve for A=B*B, given A. More...
 
template<typename MatType >
void powSolve (const MatType &aA, MatType &aB, double aPower, double aTol=0.01)
 
template<typename MatType >
bool isIdentity (const MatType &m)
 Determine if a matrix is an identity matrix. More...
 
template<typename MatType >
bool isInvertible (const MatType &m)
 Determine if a matrix is invertible. More...
 
template<typename MatType >
bool isSymmetric (const MatType &m)
 Determine if a matrix is symmetric. More...
 
template<typename MatType >
bool isUnitary (const MatType &m)
 Determine if a matrix is unitary (i.e., rotation or reflection). More...
 
template<typename MatType >
bool isDiagonal (const MatType &mat)
 Determine if a matrix is diagonal. More...
 
template<typename MatType >
MatType::ValueType lInfinityNorm (const MatType &matrix)
 Return the L norm of an N×N matrix. More...
 
template<typename MatType >
MatType::ValueType lOneNorm (const MatType &matrix)
 Return the L1 norm of an N×N matrix. More...
 
template<typename MatType >
bool polarDecomposition (const MatType &input, MatType &unitary, MatType &positive_hermitian, unsigned int MAX_ITERATIONS=100)
 Decompose an invertible 3×3 matrix into a unitary matrix followed by a symmetric matrix (positive semi-definite Hermitian), i.e., M = U * S. More...
 
template<unsigned SIZE, typename T >
bool cwiseLessThan (const Mat< SIZE, T > &m0, const Mat< SIZE, T > &m1)
 
template<unsigned SIZE, typename T >
bool cwiseGreaterThan (const Mat< SIZE, T > &m0, const Mat< SIZE, T > &m1)
 
template<typename T0 , typename T1 >
Mat3< typename promote< T0, T1 >
::type
operator* (const Mat3< T0 > &m0, const Mat3< T1 > &m1)
 Multiply m0 by m1 and return the resulting matrix. More...
 
template<typename T >
Mat3< T > outerProduct (const Vec3< T > &v1, const Vec3< T > &v2)
 
template<typename T , typename T0 >
Mat3< T > powLerp (const Mat3< T0 > &m1, const Mat3< T0 > &m2, T t)
 
template<typename T >
bool diagonalizeSymmetricMatrix (const Mat3< T > &input, Mat3< T > &Q, Vec3< T > &D, unsigned int MAX_ITERATIONS=250)
 Use Jacobi iterations to decompose a symmetric 3x3 matrix (diagonalize and compute eigenvectors) More...
 
template<typename T >
Mat3< T > Abs (const Mat3< T > &m)
 
template<typename Type1 , typename Type2 >
Mat3< Type1 > cwiseAdd (const Mat3< Type1 > &m, const Type2 s)
 
template<typename T >
bool cwiseLessThan (const Mat3< T > &m0, const Mat3< T > &m1)
 
template<typename T >
bool cwiseGreaterThan (const Mat3< T > &m0, const Mat3< T > &m1)
 
template<typename T0 , typename T1 >
Vec3< T1 > transformNormal (const Mat4< T0 > &m, const Vec3< T1 > &n)
 
template<typename T >
bool isAffine (const Mat4< T > &m)
 
template<typename T >
bool hasTranslation (const Mat4< T > &m)
 
template<typename T >
Mat4< T > Abs (const Mat4< T > &m)
 
template<typename Type1 , typename Type2 >
Mat4< Type1 > cwiseAdd (const Mat4< Type1 > &m, const Type2 s)
 
template<typename T >
bool cwiseLessThan (const Mat4< T > &m0, const Mat4< T > &m1)
 
template<typename T >
bool cwiseGreaterThan (const Mat4< T > &m0, const Mat4< T > &m1)
 
template<typename Type1 , typename Type2 >
auto cwiseAdd (const Type1 &v, const Type2 s)
 Componentwise adder for POD types. More...
 
template<typename Type1 , typename Type2 >
bool cwiseLessThan (const Type1 &a, const Type2 &b)
 Componentwise less than for POD types. More...
 
template<typename Type1 , typename Type2 >
bool cwiseGreaterThan (const Type1 &a, const Type2 &b)
 Componentwise greater than for POD types. More...
 
template<typename T >
constexpr T pi ()
 Pi constant taken from Boost to match old behaviour. More...
 
template<>
constexpr float pi ()
 
template<>
constexpr double pi ()
 
template<>
constexpr long double pi ()
 
template<typename T >
negative (const T &val)
 Return the unary negation of the given value. More...
 
template<>
bool negative (const bool &val)
 Return the negation of the given boolean. More...
 
template<>
std::string negative (const std::string &val)
 Return the "negation" of the given string. More...
 
template<typename Type >
Type Clamp (Type x, Type min, Type max)
 Return x clamped to [min, max]. More...
 
template<typename Type >
Type Clamp01 (Type x)
 Return x clamped to [0, 1]. More...
 
template<typename Type >
bool ClampTest01 (Type &x)
 Return true if x is outside [0,1]. More...
 
template<typename Type >
Type SmoothUnitStep (Type x)
 Return 0 if x < 0, 1 if x > 1 or else (3 − 2 x) x . More...
 
template<typename Type >
Type SmoothUnitStep (Type x, Type min, Type max)
 Return 0 if x < min, 1 if x > max or else (3 − 2 t) t , where t = (xmin)/(maxmin). More...
 
template<typename Type >
bool isZero (const Type &x)
 Return true if x is exactly equal to zero. More...
 
template<typename Type >
bool isApproxZero (const Type &x)
 Return true if x is equal to zero to within the default floating-point comparison tolerance. More...
 
template<typename Type >
bool isApproxZero (const Type &x, const Type &tolerance)
 Return true if x is equal to zero to within the given tolerance. More...
 
template<typename Type >
bool isNegative (const Type &x)
 Return true if x is less than zero. More...
 
template<>
bool isNegative< bool > (const bool &)
 
bool isFinite (const float x)
 Return true if x is finite. More...
 
template<typename Type , typename std::enable_if< std::is_arithmetic< Type >::value, int >::type = 0>
bool isFinite (const Type &x)
 Return true if x is finite. More...
 
bool isInfinite (const float x)
 Return true if x is an infinity value (either positive infinity or negative infinity). More...
 
template<typename Type , typename std::enable_if< std::is_arithmetic< Type >::value, int >::type = 0>
bool isInfinite (const Type &x)
 Return true if x is an infinity value (either positive infinity or negative infinity). More...
 
bool isNan (const float x)
 Return true if x is a NaN (Not-A-Number) value. More...
 
template<typename Type , typename std::enable_if< std::is_arithmetic< Type >::value, int >::type = 0>
bool isNan (const Type &x)
 Return true if x is a NaN (Not-A-Number) value. More...
 
template<typename Type >
bool isApproxEqual (const Type &a, const Type &b, const Type &tolerance)
 Return true if a is equal to b to within the given tolerance. More...
 
template<typename Type >
bool isApproxEqual (const Type &a, const Type &b)
 Return true if a is equal to b to within the default floating-point comparison tolerance. More...
 
template<typename Type >
bool isApproxLarger (const Type &a, const Type &b, const Type &tolerance)
 Return true if a is larger than b to within the given tolerance, i.e., if b - a < tolerance. More...
 
template<typename T0 , typename T1 >
bool isExactlyEqual (const T0 &a, const T1 &b)
 Return true if a is exactly equal to b. More...
 
template<typename Type >
bool isRelOrApproxEqual (const Type &a, const Type &b, const Type &absTol, const Type &relTol)
 
template<>
bool isRelOrApproxEqual (const bool &a, const bool &b, const bool &, const bool &)
 
int32_t floatToInt32 (const float f)
 
int64_t doubleToInt64 (const double d)
 
bool isUlpsEqual (const double aLeft, const double aRight, const int64_t aUnitsInLastPlace)
 
bool isUlpsEqual (const float aLeft, const float aRight, const int32_t aUnitsInLastPlace)
 
template<typename Type >
Type Pow2 (Type x)
 Return x2. More...
 
template<typename Type >
Type Pow3 (Type x)
 Return x3. More...
 
template<typename Type >
Type Pow4 (Type x)
 Return x4. More...
 
template<typename Type >
Type Pow (Type x, int n)
 Return xn. More...
 
template<typename Type >
const Type & Max (const Type &a, const Type &b)
 Return the maximum of two values. More...
 
template<typename Type >
const Type & Max (const Type &a, const Type &b, const Type &c)
 Return the maximum of three values. More...
 
template<typename Type >
const Type & Max (const Type &a, const Type &b, const Type &c, const Type &d)
 Return the maximum of four values. More...
 
template<typename Type >
const Type & Max (const Type &a, const Type &b, const Type &c, const Type &d, const Type &e)
 Return the maximum of five values. More...
 
template<typename Type >
const Type & Max (const Type &a, const Type &b, const Type &c, const Type &d, const Type &e, const Type &f)
 Return the maximum of six values. More...
 
template<typename Type >
const Type & Max (const Type &a, const Type &b, const Type &c, const Type &d, const Type &e, const Type &f, const Type &g)
 Return the maximum of seven values. More...
 
template<typename Type >
const Type & Max (const Type &a, const Type &b, const Type &c, const Type &d, const Type &e, const Type &f, const Type &g, const Type &h)
 Return the maximum of eight values. More...
 
template<typename Type >
const Type & Min (const Type &a, const Type &b)
 Return the minimum of two values. More...
 
template<typename Type >
const Type & Min (const Type &a, const Type &b, const Type &c)
 Return the minimum of three values. More...
 
template<typename Type >
const Type & Min (const Type &a, const Type &b, const Type &c, const Type &d)
 Return the minimum of four values. More...
 
template<typename Type >
const Type & Min (const Type &a, const Type &b, const Type &c, const Type &d, const Type &e)
 Return the minimum of five values. More...
 
template<typename Type >
const Type & Min (const Type &a, const Type &b, const Type &c, const Type &d, const Type &e, const Type &f)
 Return the minimum of six values. More...
 
template<typename Type >
const Type & Min (const Type &a, const Type &b, const Type &c, const Type &d, const Type &e, const Type &f, const Type &g)
 Return the minimum of seven values. More...
 
template<typename Type >
const Type & Min (const Type &a, const Type &b, const Type &c, const Type &d, const Type &e, const Type &f, const Type &g, const Type &h)
 Return the minimum of eight values. More...
 
template<typename Type >
Type Exp (const Type &x)
 Return ex. More...
 
template<typename Type >
int Sign (const Type &x)
 Return the sign of the given value as an integer (either -1, 0 or 1). More...
 
template<typename Type >
bool SignChange (const Type &a, const Type &b)
 Return true if a and b have different signs. More...
 
template<typename Type >
bool ZeroCrossing (const Type &a, const Type &b)
 Return true if the interval [a, b] includes zero, i.e., if either a or b is zero or if they have different signs. More...
 
template<typename Type >
Type RoundUp (Type x, Type base)
 Return x rounded up to the nearest multiple of base. More...
 
template<typename Type >
Type RoundDown (Type x, Type base)
 Return x rounded down to the nearest multiple of base. More...
 
template<typename Type >
Type EuclideanRemainder (Type x)
 
template<typename Type >
Type IntegerPart (Type x)
 Return the integer part of x. More...
 
template<typename Type >
Type FractionalPart (Type x)
 Return the fractional part of x. More...
 
template<typename Type >
Type Chop (Type x, Type delta)
 Return x if it is greater or equal in magnitude than delta. Otherwise, return zero. More...
 
template<typename Type >
Type Truncate (Type x, unsigned int digits)
 Return x truncated to the given number of decimal digits. More...
 
template<typename T >
auto PrintCast (const T &val) -> typename std::enable_if<!std::is_same< T, int8_t >::value &&!std::is_same< T, uint8_t >::value, const T & >::type
 8-bit integer values print to std::ostreams as characters. Cast them so that they print as integers instead. More...
 
int32_t PrintCast (int8_t val)
 
uint32_t PrintCast (uint8_t val)
 
template<typename Type >
Type Inv (Type x)
 Return the inverse of x. More...
 
template<typename Vec3T >
size_t MinIndex (const Vec3T &v)
 Return the index [0,1,2] of the smallest value in a 3D vector. More...
 
template<typename Vec3T >
size_t MaxIndex (const Vec3T &v)
 Return the index [0,1,2] of the largest value in a 3D vector. More...
 
OPENVDB_API Vec3d closestPointOnTriangleToPoint (const Vec3d &a, const Vec3d &b, const Vec3d &c, const Vec3d &p, Vec3d &uvw)
 Closest Point on Triangle to Point. Given a triangle abc and a point p, return the point on abc closest to p and the corresponding barycentric coordinates. More...
 
OPENVDB_API Vec3d closestPointOnSegmentToPoint (const Vec3d &a, const Vec3d &b, const Vec3d &p, double &t)
 Closest Point on Line Segment to Point. Given segment ab and point p, return the point on ab closest to p and t the parametric distance to b. More...
 
template<typename T >
Quat< T > slerp (const Quat< T > &q1, const Quat< T > &q2, T t, T tolerance=0.00001)
 Linear interpolation between the two quaternions. More...
 
template<typename S , typename T >
Quat< T > operator* (S scalar, const Quat< T > &q)
 Multiply each element of the given quaternion by scalar and return the result. More...
 
template<typename T , typename T0 >
Mat3< T > slerp (const Mat3< T0 > &m1, const Mat3< T0 > &m2, T t)
 Interpolate between m1 and m2. Converts to quaternion form and uses slerp m1 and m2 must be rotation matrices! More...
 
template<typename T , typename T0 >
Mat3< T > bezLerp (const Mat3< T0 > &m1, const Mat3< T0 > &m2, const Mat3< T0 > &m3, const Mat3< T0 > &m4, T t)
 
template<typename RealT >
std::ostream & operator<< (std::ostream &os, const Ray< RealT > &r)
 Output streaming of the Ray class. More...
 
OPENVDB_API void calculateBounds (const Transform &t, const Vec3d &minWS, const Vec3d &maxWS, Vec3d &minIS, Vec3d &maxIS)
 Calculate an axis-aligned bounding box in index space from an axis-aligned bounding box in world space. More...
 
OPENVDB_API std::ostream & operator<< (std::ostream &, const Transform &)
 
template<typename ResolvedMapType , typename OpType >
void doProcessTypedMap (Transform &transform, OpType &op)
 Helper function used internally by processTypedMap() More...
 
template<typename ResolvedMapType , typename OpType >
void doProcessTypedMap (const Transform &transform, OpType &op)
 Helper function used internally by processTypedMap() More...
 
template<typename TransformType , typename OpType >
bool processTypedMap (TransformType &transform, OpType &op)
 Utility function that, given a generic map pointer, calls a functor on the fully-resoved map. More...
 
template<int SIZE, typename T0 , typename T1 >
bool operator< (const Tuple< SIZE, T0 > &t0, const Tuple< SIZE, T1 > &t1)
 
template<int SIZE, typename T0 , typename T1 >
bool operator> (const Tuple< SIZE, T0 > &t0, const Tuple< SIZE, T1 > &t1)
 
template<int SIZE, typename T >
Tuple< SIZE, T > Abs (const Tuple< SIZE, T > &t)
 
template<int SIZE, typename T >
bool isNan (const Tuple< SIZE, T > &t)
 Return true if a Nan is present in the tuple. More...
 
template<int SIZE, typename T >
bool isInfinite (const Tuple< SIZE, T > &t)
 Return true if an Inf is present in the tuple. More...
 
template<int SIZE, typename T >
bool isFinite (const Tuple< SIZE, T > &t)
 Return true if no Nan or Inf values are present. More...
 
template<int SIZE, typename T >
bool isZero (const Tuple< SIZE, T > &t)
 Return true if all elements are exactly equal to zero. More...
 
template<int SIZE, typename T >
std::ostream & operator<< (std::ostream &ostr, const Tuple< SIZE, T > &classname)
 Write a Tuple to an output stream. More...
 
template<typename S , typename T >
Vec2< typename promote< S, T >
::type
operator* (S scalar, const Vec2< T > &v)
 Multiply each element of the given vector by scalar and return the result. More...
 
template<typename S , typename T >
Vec2< typename promote< S, T >
::type
operator* (const Vec2< T > &v, S scalar)
 Multiply each element of the given vector by scalar and return the result. More...
 
template<typename T0 , typename T1 >
Vec2< typename promote< T0, T1 >
::type
operator* (const Vec2< T0 > &v0, const Vec2< T1 > &v1)
 Multiply corresponding elements of v0 and v1 and return the result. More...
 
template<typename S , typename T >
Vec2< typename promote< S, T >
::type
operator/ (S scalar, const Vec2< T > &v)
 Divide scalar by each element of the given vector and return the result. More...
 
template<typename S , typename T >
Vec2< typename promote< S, T >
::type
operator/ (const Vec2< T > &v, S scalar)
 Divide each element of the given vector by scalar and return the result. More...
 
template<typename T0 , typename T1 >
Vec2< typename promote< T0, T1 >
::type
operator/ (const Vec2< T0 > &v0, const Vec2< T1 > &v1)
 Divide corresponding elements of v0 and v1 and return the result. More...
 
template<typename T0 , typename T1 >
Vec2< typename promote< T0, T1 >
::type
operator+ (const Vec2< T0 > &v0, const Vec2< T1 > &v1)
 Add corresponding elements of v0 and v1 and return the result. More...
 
template<typename S , typename T >
Vec2< typename promote< S, T >
::type
operator+ (const Vec2< T > &v, S scalar)
 Add scalar to each element of the given vector and return the result. More...
 
template<typename T0 , typename T1 >
Vec2< typename promote< T0, T1 >
::type
operator- (const Vec2< T0 > &v0, const Vec2< T1 > &v1)
 Subtract corresponding elements of v0 and v1 and return the result. More...
 
template<typename S , typename T >
Vec2< typename promote< S, T >
::type
operator- (const Vec2< T > &v, S scalar)
 Subtract scalar from each element of the given vector and return the result. More...
 
template<typename T >
angle (const Vec2< T > &v1, const Vec2< T > &v2)
 
template<typename T >
bool isApproxEqual (const Vec2< T > &a, const Vec2< T > &b)
 
template<typename T >
bool isApproxEqual (const Vec2< T > &a, const Vec2< T > &b, const Vec2< T > &eps)
 
template<typename T >
Vec2< T > Abs (const Vec2< T > &v)
 
template<typename T >
void orthonormalize (Vec2< T > &v1, Vec2< T > &v2)
 
template<typename T >
Vec2< T > minComponent (const Vec2< T > &v1, const Vec2< T > &v2)
 Return component-wise minimum of the two vectors. More...
 
template<typename T >
Vec2< T > maxComponent (const Vec2< T > &v1, const Vec2< T > &v2)
 Return component-wise maximum of the two vectors. More...
 
template<typename T >
Vec2< T > Exp (Vec2< T > v)
 Return a vector with the exponent applied to each of the components of the input vector. More...
 
template<typename T >
Vec2< T > Log (Vec2< T > v)
 Return a vector with log applied to each of the components of the input vector. More...
 
template<typename T0 , typename T1 >
bool operator== (const Vec3< T0 > &v0, const Vec3< T1 > &v1)
 Equality operator, does exact floating point comparisons. More...
 
template<typename T0 , typename T1 >
bool operator!= (const Vec3< T0 > &v0, const Vec3< T1 > &v1)
 Inequality operator, does exact floating point comparisons. More...
 
template<typename S , typename T >
Vec3< typename promote< S, T >
::type
operator* (S scalar, const Vec3< T > &v)
 Multiply each element of the given vector by scalar and return the result. More...
 
template<typename S , typename T >
Vec3< typename promote< S, T >
::type
operator* (const Vec3< T > &v, S scalar)
 Multiply each element of the given vector by scalar and return the result. More...
 
template<typename T0 , typename T1 >
Vec3< typename promote< T0, T1 >
::type
operator* (const Vec3< T0 > &v0, const Vec3< T1 > &v1)
 Multiply corresponding elements of v0 and v1 and return the result. More...
 
template<typename S , typename T >
Vec3< typename promote< S, T >
::type
operator/ (S scalar, const Vec3< T > &v)
 Divide scalar by each element of the given vector and return the result. More...
 
template<typename S , typename T >
Vec3< typename promote< S, T >
::type
operator/ (const Vec3< T > &v, S scalar)
 Divide each element of the given vector by scalar and return the result. More...
 
template<typename T0 , typename T1 >
Vec3< typename promote< T0, T1 >
::type
operator/ (const Vec3< T0 > &v0, const Vec3< T1 > &v1)
 Divide corresponding elements of v0 and v1 and return the result. More...
 
template<typename T0 , typename T1 >
Vec3< typename promote< T0, T1 >
::type
operator+ (const Vec3< T0 > &v0, const Vec3< T1 > &v1)
 Add corresponding elements of v0 and v1 and return the result. More...
 
template<typename S , typename T >
Vec3< typename promote< S, T >
::type
operator+ (const Vec3< T > &v, S scalar)
 Add scalar to each element of the given vector and return the result. More...
 
template<typename T0 , typename T1 >
Vec3< typename promote< T0, T1 >
::type
operator- (const Vec3< T0 > &v0, const Vec3< T1 > &v1)
 Subtract corresponding elements of v0 and v1 and return the result. More...
 
template<typename S , typename T >
Vec3< typename promote< S, T >
::type
operator- (const Vec3< T > &v, S scalar)
 Subtract scalar from each element of the given vector and return the result. More...
 
template<typename T >
angle (const Vec3< T > &v1, const Vec3< T > &v2)
 
template<typename T >
bool isApproxEqual (const Vec3< T > &a, const Vec3< T > &b)
 
template<typename T >
bool isApproxEqual (const Vec3< T > &a, const Vec3< T > &b, const Vec3< T > &eps)
 
template<typename T >
Vec3< T > Abs (const Vec3< T > &v)
 
template<typename T >
void orthonormalize (Vec3< T > &v1, Vec3< T > &v2, Vec3< T > &v3)
 
template<typename T >
Vec3< T > minComponent (const Vec3< T > &v1, const Vec3< T > &v2)
 Return component-wise minimum of the two vectors. More...
 
template<typename T >
Vec3< T > maxComponent (const Vec3< T > &v1, const Vec3< T > &v2)
 Return component-wise maximum of the two vectors. More...
 
template<typename T >
Vec3< T > Exp (Vec3< T > v)
 Return a vector with the exponent applied to each of the components of the input vector. More...
 
template<typename T >
Vec3< T > Log (Vec3< T > v)
 Return a vector with log applied to each of the components of the input vector. More...
 
template<typename T0 , typename T1 >
bool operator== (const Vec4< T0 > &v0, const Vec4< T1 > &v1)
 Equality operator, does exact floating point comparisons. More...
 
template<typename T0 , typename T1 >
bool operator!= (const Vec4< T0 > &v0, const Vec4< T1 > &v1)
 Inequality operator, does exact floating point comparisons. More...
 
template<typename S , typename T >
Vec4< typename promote< S, T >
::type
operator* (S scalar, const Vec4< T > &v)
 Multiply each element of the given vector by scalar and return the result. More...
 
template<typename S , typename T >
Vec4< typename promote< S, T >
::type
operator* (const Vec4< T > &v, S scalar)
 Multiply each element of the given vector by scalar and return the result. More...
 
template<typename T0 , typename T1 >
Vec4< typename promote< T0, T1 >
::type
operator* (const Vec4< T0 > &v0, const Vec4< T1 > &v1)
 Multiply corresponding elements of v0 and v1 and return the result. More...
 
template<typename S , typename T >
Vec4< typename promote< S, T >
::type
operator/ (S scalar, const Vec4< T > &v)
 Divide scalar by each element of the given vector and return the result. More...
 
template<typename S , typename T >
Vec4< typename promote< S, T >
::type
operator/ (const Vec4< T > &v, S scalar)
 Divide each element of the given vector by scalar and return the result. More...
 
template<typename T0 , typename T1 >
Vec4< typename promote< T0, T1 >
::type
operator/ (const Vec4< T0 > &v0, const Vec4< T1 > &v1)
 Divide corresponding elements of v0 and v1 and return the result. More...
 
template<typename T0 , typename T1 >
Vec4< typename promote< T0, T1 >
::type
operator+ (const Vec4< T0 > &v0, const Vec4< T1 > &v1)
 Add corresponding elements of v0 and v1 and return the result. More...
 
template<typename S , typename T >
Vec4< typename promote< S, T >
::type
operator+ (const Vec4< T > &v, S scalar)
 Add scalar to each element of the given vector and return the result. More...
 
template<typename T0 , typename T1 >
Vec4< typename promote< T0, T1 >
::type
operator- (const Vec4< T0 > &v0, const Vec4< T1 > &v1)
 Subtract corresponding elements of v0 and v1 and return the result. More...
 
template<typename S , typename T >
Vec4< typename promote< S, T >
::type
operator- (const Vec4< T > &v, S scalar)
 Subtract scalar from each element of the given vector and return the result. More...
 
template<typename T >
bool isApproxEqual (const Vec4< T > &a, const Vec4< T > &b)
 
template<typename T >
bool isApproxEqual (const Vec4< T > &a, const Vec4< T > &b, const Vec4< T > &eps)
 
template<typename T >
Vec4< T > Abs (const Vec4< T > &v)
 
template<typename T >
Vec4< T > minComponent (const Vec4< T > &v1, const Vec4< T > &v2)
 Return component-wise minimum of the two vectors. More...
 
template<typename T >
Vec4< T > maxComponent (const Vec4< T > &v1, const Vec4< T > &v2)
 Return component-wise maximum of the two vectors. More...
 
template<typename T >
Vec4< T > Exp (Vec4< T > v)
 Return a vector with the exponent applied to each of the components of the input vector. More...
 
template<typename T >
Vec4< T > Log (Vec4< T > v)
 Return a vector with log applied to each of the components of the input vector. More...
 
template<typename T >
Vec3< typename promote< T,
typename Coord::ValueType >
::type
operator+ (const Vec3< T > &v0, const Coord &v1)
 Allow a Coord to be added to or subtracted from a Vec3. More...
 
template<typename T >
Vec3< typename promote< T,
typename Coord::ValueType >
::type
operator+ (const Coord &v1, const Vec3< T > &v0)
 Allow a Coord to be added to or subtracted from a Vec3. More...
 
template<typename T >
Vec3< typename promote< T,
Coord::ValueType >::type
operator- (const Vec3< T > &v0, const Coord &v1)
 Allow a Coord to be subtracted from a Vec3. More...
 
template<typename T >
Vec3< typename promote< T,
Coord::ValueType >::type
operator- (const Coord &v1, const Vec3< T > &v0)
 Allow a Coord to be subtracted from a Vec3. More...
 
std::string operator+ (const std::string &s, bool)
 Needed to support the (zeroVal<ValueType>() + val) idiom when ValueType is std::string. More...
 
std::string operator+ (const std::string &s, int)
 Needed to support the (zeroVal<ValueType>() + val) idiom when ValueType is std::string. More...
 
std::string operator+ (const std::string &s, float)
 Needed to support the (zeroVal<ValueType>() + val) idiom when ValueType is std::string. More...
 
std::string operator+ (const std::string &s, double)
 Needed to support the (zeroVal<ValueType>() + val) idiom when ValueType is std::string. More...
 
int32_t Abs (int32_t i)
 Return the absolute value of the given quantity. More...
 
int64_t Abs (int64_t i)
 Return the absolute value of the given quantity. More...
 
float Abs (float x)
 Return the absolute value of the given quantity. More...
 
double Abs (double x)
 Return the absolute value of the given quantity. More...
 
long double Abs (long double x)
 Return the absolute value of the given quantity. More...
 
uint32_t Abs (uint32_t i)
 Return the absolute value of the given quantity. More...
 
uint64_t Abs (uint64_t i)
 Return the absolute value of the given quantity. More...
 
bool Abs (bool b)
 Return the absolute value of the given quantity. More...
 
template<typename T >
std::enable_if< std::is_same
< T, size_t >::value, T >
::type 
Abs (T i)
 Return the absolute value of the given quantity. More...
 
float Pow (float b, float e)
 Return be. More...
 
double Pow (double b, double e)
 Return be. More...
 
float Sin (const float &x)
 Return sin x. More...
 
double Sin (const double &x)
 Return sin x. More...
 
float Cos (const float &x)
 Return cos x. More...
 
double Cos (const double &x)
 Return cos x. More...
 
float Sqrt (float x)
 Return the square root of a floating-point value. More...
 
double Sqrt (double x)
 Return the square root of a floating-point value. More...
 
long double Sqrt (long double x)
 Return the square root of a floating-point value. More...
 
float Cbrt (float x)
 Return the cube root of a floating-point value. More...
 
double Cbrt (double x)
 Return the cube root of a floating-point value. More...
 
long double Cbrt (long double x)
 Return the cube root of a floating-point value. More...
 
int Mod (int x, int y)
 Return the remainder of x / y. More...
 
float Mod (float x, float y)
 Return the remainder of x / y. More...
 
double Mod (double x, double y)
 Return the remainder of x / y. More...
 
long double Mod (long double x, long double y)
 Return the remainder of x / y. More...
 
template<typename Type >
Type Remainder (Type x, Type y)
 Return the remainder of x / y. More...
 
float RoundUp (float x)
 Return x rounded up to the nearest integer. More...
 
double RoundUp (double x)
 Return x rounded up to the nearest integer. More...
 
long double RoundUp (long double x)
 Return x rounded up to the nearest integer. More...
 
float RoundDown (float x)
 Return x rounded down to the nearest integer. More...
 
double RoundDown (double x)
 Return x rounded down to the nearest integer. More...
 
long double RoundDown (long double x)
 Return x rounded down to the nearest integer. More...
 
float Round (float x)
 Return x rounded to the nearest integer. More...
 
double Round (double x)
 Return x rounded to the nearest integer. More...
 
long double Round (long double x)
 Return x rounded to the nearest integer. More...
 
int Floor (float x)
 Return the floor of x. More...
 
int Floor (double x)
 Return the floor of x. More...
 
int Floor (long double x)
 Return the floor of x. More...
 
int Ceil (float x)
 Return the ceiling of x. More...
 
int Ceil (double x)
 Return the ceiling of x. More...
 
int Ceil (long double x)
 Return the ceiling of x. More...
 

Typedef Documentation

Definition at line 29 of file Types.h.

Definition at line 834 of file Mat3.h.

Definition at line 835 of file Mat3.h.

Definition at line 833 of file Mat3.h.

Definition at line 1354 of file Mat4.h.

Definition at line 1355 of file Mat4.h.

Definition at line 1353 of file Mat4.h.

Definition at line 601 of file Quat.h.

Definition at line 600 of file Quat.h.

using openvdb::OPENVDB_VERSION_NAME::math::Random01 = typedef Rand01<double, std::mt19937>

Definition at line 196 of file Math.h.

Definition at line 253 of file Math.h.

Definition at line 533 of file Vec2.h.

Definition at line 530 of file Vec2.h.

Definition at line 532 of file Vec2.h.

Definition at line 531 of file Vec2.h.

Definition at line 664 of file Vec3.h.

Definition at line 661 of file Vec3.h.

Definition at line 663 of file Vec3.h.

Definition at line 662 of file Vec3.h.

Definition at line 562 of file Vec4.h.

Definition at line 559 of file Vec4.h.

Definition at line 561 of file Vec4.h.

Definition at line 560 of file Vec4.h.

Enumeration Type Documentation

anonymous enum
Enumerator
NUM_DS_SCHEMES 

Definition at line 49 of file FiniteDifference.h.

anonymous enum
Enumerator
NUM_DD_SCHEMES 

Definition at line 156 of file FiniteDifference.h.

anonymous enum
Enumerator
NUM_BIAS_SCHEMES 

Definition at line 173 of file FiniteDifference.h.

anonymous enum
Enumerator
NUM_TEMPORAL_SCHEMES 

Definition at line 240 of file FiniteDifference.h.

Enumerator
X_AXIS 
Y_AXIS 
Z_AXIS 

Definition at line 901 of file Math.h.

Biased Gradients are limited to non-centered differences.

Enumerator
UNKNOWN_BIAS 
FIRST_BIAS 
SECOND_BIAS 
THIRD_BIAS 
WENO5_BIAS 
HJWENO5_BIAS 

Definition at line 164 of file FiniteDifference.h.

Different discrete schemes used in the second derivatives.

Enumerator
UNKNOWN_DD 
CD_SECOND 
CD_FOURTH 
CD_SIXTH 

Definition at line 149 of file FiniteDifference.h.

Different discrete schemes used in the first derivatives.

Enumerator
UNKNOWN_DS 
CD_2NDT 
CD_2ND 
CD_4TH 
CD_6TH 
FD_1ST 
FD_2ND 
FD_3RD 
BD_1ST 
BD_2ND 
BD_3RD 
FD_WENO5 
BD_WENO5 
FD_HJWENO5 
BD_HJWENO5 

Definition at line 31 of file FiniteDifference.h.

Enumerator
XYZ_ROTATION 
XZY_ROTATION 
YXZ_ROTATION 
YZX_ROTATION 
ZXY_ROTATION 
ZYX_ROTATION 
XZX_ROTATION 
ZXZ_ROTATION 

Definition at line 908 of file Math.h.

Temporal integration schemes.

Enumerator
UNKNOWN_TIS 
TVD_RK1 
TVD_RK2 
TVD_RK3 

Definition at line 233 of file FiniteDifference.h.

Function Documentation

template<int SIZE, typename T >
Tuple<SIZE, T> openvdb::OPENVDB_VERSION_NAME::math::Abs ( const Tuple< SIZE, T > &  t)
Returns
the absolute value of the given Tuple.

Definition at line 201 of file Tuple.h.

int32_t openvdb::OPENVDB_VERSION_NAME::math::Abs ( int32_t  i)
inline

Return the absolute value of the given quantity.

Definition at line 308 of file Math.h.

int64_t openvdb::OPENVDB_VERSION_NAME::math::Abs ( int64_t  i)
inline

Return the absolute value of the given quantity.

Definition at line 309 of file Math.h.

float openvdb::OPENVDB_VERSION_NAME::math::Abs ( float  x)
inline

Return the absolute value of the given quantity.

Definition at line 315 of file Math.h.

double openvdb::OPENVDB_VERSION_NAME::math::Abs ( double  x)
inline

Return the absolute value of the given quantity.

Definition at line 316 of file Math.h.

long double openvdb::OPENVDB_VERSION_NAME::math::Abs ( long double  x)
inline

Return the absolute value of the given quantity.

Definition at line 317 of file Math.h.

uint32_t openvdb::OPENVDB_VERSION_NAME::math::Abs ( uint32_t  i)
inline

Return the absolute value of the given quantity.

Definition at line 318 of file Math.h.

uint64_t openvdb::OPENVDB_VERSION_NAME::math::Abs ( uint64_t  i)
inline

Return the absolute value of the given quantity.

Definition at line 319 of file Math.h.

bool openvdb::OPENVDB_VERSION_NAME::math::Abs ( bool  b)
inline

Return the absolute value of the given quantity.

Definition at line 320 of file Math.h.

template<typename T >
std::enable_if<std::is_same<T, size_t>::value, T>::type openvdb::OPENVDB_VERSION_NAME::math::Abs ( i)
inline

Return the absolute value of the given quantity.

Definition at line 324 of file Math.h.

template<typename T >
Vec2<T> openvdb::OPENVDB_VERSION_NAME::math::Abs ( const Vec2< T > &  v)
inline

Definition at line 468 of file Vec2.h.

template<typename T >
Vec4<T> openvdb::OPENVDB_VERSION_NAME::math::Abs ( const Vec4< T > &  v)
inline

Definition at line 517 of file Vec4.h.

Coord openvdb::OPENVDB_VERSION_NAME::math::Abs ( const Coord &  xyz)
inline

Definition at line 517 of file Coord.h.

template<typename T >
Vec3<T> openvdb::OPENVDB_VERSION_NAME::math::Abs ( const Vec3< T > &  v)
inline

Definition at line 591 of file Vec3.h.

template<typename T >
Mat3<T> openvdb::OPENVDB_VERSION_NAME::math::Abs ( const Mat3< T > &  m)
inline

Definition at line 795 of file Mat3.h.

template<typename T >
Mat4<T> openvdb::OPENVDB_VERSION_NAME::math::Abs ( const Mat4< T > &  m)
inline

Definition at line 1315 of file Mat4.h.

template<class MatType >
MatType openvdb::OPENVDB_VERSION_NAME::math::aim ( const Vec3< typename MatType::value_type > &  direction,
const Vec3< typename MatType::value_type > &  vertical 
)

Return an orientation matrix such that z points along direction, and y is along the direction / vertical plane.

Definition at line 726 of file Mat.h.

template<typename T >
T openvdb::OPENVDB_VERSION_NAME::math::angle ( const Vec2< T > &  v1,
const Vec2< T > &  v2 
)
inline

Angle between two vectors, the result is between [0, pi], e.g. float a = Vec2f::angle(v1,v2);

Definition at line 446 of file Vec2.h.

template<typename T >
T openvdb::OPENVDB_VERSION_NAME::math::angle ( const Vec3< T > &  v1,
const Vec3< T > &  v2 
)
inline

Angle between two vectors, the result is between [0, pi], e.g. double a = Vec3d::angle(v1,v2);

Definition at line 568 of file Vec3.h.

OPENVDB_API Mat4d openvdb::OPENVDB_VERSION_NAME::math::approxInverse ( const Mat4d &  mat)

Returns the left pseudoInverse of the input matrix when the 3x3 part is symmetric otherwise it zeros the 3x3 and reverses the translation.

template<typename T , typename T0 >
Mat3<T> openvdb::OPENVDB_VERSION_NAME::math::bezLerp ( const Mat3< T0 > &  m1,
const Mat3< T0 > &  m2,
const Mat3< T0 > &  m3,
const Mat3< T0 > &  m4,
t 
)

Interpolate between m1 and m4 by converting m1 ... m4 into quaternions and treating them as control points of a Bezier curve using slerp in place of lerp in the De Castlejeau evaluation algorithm. Just like a cubic Bezier curve, this will interpolate m1 at t = 0 and m4 at t = 1 but in general will not pass through m2 and m3. Unlike a standard Bezier curve this curve will not have the convex hull property. m1 ... m4 must be rotation matrices!

Definition at line 584 of file Quat.h.

std::string openvdb::OPENVDB_VERSION_NAME::math::biasedGradientSchemeToMenuName ( BiasedGradientScheme  bgs)
inline

Definition at line 214 of file FiniteDifference.h.

std::string openvdb::OPENVDB_VERSION_NAME::math::biasedGradientSchemeToString ( BiasedGradientScheme  bgs)
inline

Definition at line 176 of file FiniteDifference.h.

OPENVDB_API void openvdb::OPENVDB_VERSION_NAME::math::calculateBounds ( const Transform &  t,
const Vec3d &  minWS,
const Vec3d &  maxWS,
Vec3d &  minIS,
Vec3d &  maxIS 
)

Calculate an axis-aligned bounding box in index space from an axis-aligned bounding box in world space.

See Also
Transform::worldToIndex(const BBoxd&) const
float openvdb::OPENVDB_VERSION_NAME::math::Cbrt ( float  x)
inline

Return the cube root of a floating-point value.

Definition at line 769 of file Math.h.

double openvdb::OPENVDB_VERSION_NAME::math::Cbrt ( double  x)
inline

Return the cube root of a floating-point value.

Definition at line 770 of file Math.h.

long double openvdb::OPENVDB_VERSION_NAME::math::Cbrt ( long double  x)
inline

Return the cube root of a floating-point value.

Definition at line 771 of file Math.h.

int openvdb::OPENVDB_VERSION_NAME::math::Ceil ( float  x)
inline

Return the ceiling of x.

Definition at line 856 of file Math.h.

int openvdb::OPENVDB_VERSION_NAME::math::Ceil ( double  x)
inline

Return the ceiling of x.

Definition at line 857 of file Math.h.

int openvdb::OPENVDB_VERSION_NAME::math::Ceil ( long double  x)
inline

Return the ceiling of x.

Definition at line 858 of file Math.h.

template<typename Type >
Type openvdb::OPENVDB_VERSION_NAME::math::Chop ( Type  x,
Type  delta 
)
inline

Return x if it is greater or equal in magnitude than delta. Otherwise, return zero.

Definition at line 864 of file Math.h.

template<typename Type >
Type openvdb::OPENVDB_VERSION_NAME::math::Clamp ( Type  x,
Type  min,
Type  max 
)
inline

Return x clamped to [min, max].

Definition at line 261 of file Math.h.

template<typename Type >
Type openvdb::OPENVDB_VERSION_NAME::math::Clamp01 ( Type  x)
inline

Return x clamped to [0, 1].

Definition at line 271 of file Math.h.

template<typename Type >
bool openvdb::OPENVDB_VERSION_NAME::math::ClampTest01 ( Type &  x)
inline

Return true if x is outside [0,1].

Definition at line 277 of file Math.h.

OPENVDB_API Vec3d openvdb::OPENVDB_VERSION_NAME::math::closestPointOnSegmentToPoint ( const Vec3d &  a,
const Vec3d &  b,
const Vec3d &  p,
double &  t 
)

Closest Point on Line Segment to Point. Given segment ab and point p, return the point on ab closest to p and t the parametric distance to b.

Parameters
aThe segment's first vertex point.
bThe segment's second vertex point.
pPoint to compute the closest point on ab for.
tParametric distance to b.
OPENVDB_API Vec3d openvdb::OPENVDB_VERSION_NAME::math::closestPointOnTriangleToPoint ( const Vec3d &  a,
const Vec3d &  b,
const Vec3d &  c,
const Vec3d &  p,
Vec3d &  uvw 
)

Closest Point on Triangle to Point. Given a triangle abc and a point p, return the point on abc closest to p and the corresponding barycentric coordinates.

Algorithms from "Real-Time Collision Detection" pg 136 to 142 by Christer Ericson. The closest point is obtained by first determining which of the triangles' Voronoi feature regions p is in and then computing the orthogonal projection of p onto the corresponding feature.

Parameters
aThe triangle's first vertex point.
bThe triangle's second vertex point.
cThe triangle's third vertex point.
pPoint to compute the closest point on abc for.
uvwBarycentric coordinates, computed and returned.
float openvdb::OPENVDB_VERSION_NAME::math::Cos ( const float x)
inline

Return cos x.

Definition at line 725 of file Math.h.

double openvdb::OPENVDB_VERSION_NAME::math::Cos ( const double &  x)
inline

Return cos x.

Definition at line 727 of file Math.h.

OPENVDB_API SharedPtr<FullyDecomposedMap> openvdb::OPENVDB_VERSION_NAME::math::createFullyDecomposedMap ( const Mat4d &  m)

General decomposition of a Matrix into a Unitary (e.g. rotation) following a Symmetric (e.g. stretch & shear)

OPENVDB_API SharedPtr<PolarDecomposedMap> openvdb::OPENVDB_VERSION_NAME::math::createPolarDecomposedMap ( const Mat3d &  m)

Decomposes a general linear into translation following polar decomposition.

T U S where:

T: Translation U: Unitary (rotation or reflection) S: Symmetric

Note
: the Symmetric is automatically decomposed into Q D Q^T, where Q is rotation and D is diagonal.
OPENVDB_API SharedPtr<SymmetricMap> openvdb::OPENVDB_VERSION_NAME::math::createSymmetricMap ( const Mat3d &  m)

Utility methods.

Create a SymmetricMap from a symmetric matrix. Decomposes the map into Rotation Diagonal Rotation^T

template<typename Type1 , typename Type2 >
auto openvdb::OPENVDB_VERSION_NAME::math::cwiseAdd ( const Type1 &  v,
const Type2  s 
)
inline

Componentwise adder for POD types.

Definition at line 90 of file Math.h.

template<typename Type1 , typename Type2 >
Mat3<Type1> openvdb::OPENVDB_VERSION_NAME::math::cwiseAdd ( const Mat3< Type1 > &  m,
const Type2  s 
)
inline

Definition at line 806 of file Mat3.h.

template<typename Type1 , typename Type2 >
Mat4<Type1> openvdb::OPENVDB_VERSION_NAME::math::cwiseAdd ( const Mat4< Type1 > &  m,
const Type2  s 
)
inline

Definition at line 1326 of file Mat4.h.

template<typename Type1 , typename Type2 >
bool openvdb::OPENVDB_VERSION_NAME::math::cwiseGreaterThan ( const Type1 &  a,
const Type2 &  b 
)
inline

Componentwise greater than for POD types.

Definition at line 108 of file Math.h.

template<typename T >
bool openvdb::OPENVDB_VERSION_NAME::math::cwiseGreaterThan ( const Mat3< T > &  m0,
const Mat3< T > &  m1 
)
inline

Definition at line 828 of file Mat3.h.

template<unsigned SIZE, typename T >
bool openvdb::OPENVDB_VERSION_NAME::math::cwiseGreaterThan ( const Mat< SIZE, T > &  m0,
const Mat< SIZE, T > &  m1 
)
inline
Returns
true if m0 > m1, comparing components in order of significance.

Definition at line 1029 of file Mat.h.

template<typename T >
bool openvdb::OPENVDB_VERSION_NAME::math::cwiseGreaterThan ( const Mat4< T > &  m0,
const Mat4< T > &  m1 
)
inline

Definition at line 1348 of file Mat4.h.

template<typename Type1 , typename Type2 >
bool openvdb::OPENVDB_VERSION_NAME::math::cwiseLessThan ( const Type1 &  a,
const Type2 &  b 
)
inline

Componentwise less than for POD types.

Definition at line 99 of file Math.h.

template<typename T >
bool openvdb::OPENVDB_VERSION_NAME::math::cwiseLessThan ( const Mat3< T > &  m0,
const Mat3< T > &  m1 
)
inline

Definition at line 821 of file Mat3.h.

template<unsigned SIZE, typename T >
bool openvdb::OPENVDB_VERSION_NAME::math::cwiseLessThan ( const Mat< SIZE, T > &  m0,
const Mat< SIZE, T > &  m1 
)
inline
Returns
true if m0 < m1, comparing components in order of significance.

Definition at line 1015 of file Mat.h.

template<typename T >
bool openvdb::OPENVDB_VERSION_NAME::math::cwiseLessThan ( const Mat4< T > &  m0,
const Mat4< T > &  m1 
)
inline

Definition at line 1341 of file Mat4.h.

template<typename T >
bool openvdb::OPENVDB_VERSION_NAME::math::diagonalizeSymmetricMatrix ( const Mat3< T > &  input,
Mat3< T > &  Q,
Vec3< T > &  D,
unsigned int  MAX_ITERATIONS = 250 
)
inline

Use Jacobi iterations to decompose a symmetric 3x3 matrix (diagonalize and compute eigenvectors)

This is based on the "Efficient numerical diagonalization of Hermitian 3x3 matrices" Joachim Kopp. arXiv.org preprint: physics/0610206 with the addition of largest pivot

use Givens rotation matrix to eliminate off-diagonal entries. initialize the rotation matrix as idenity

temp matrix. Assumed to be symmetric

Just iterate over all the non-diagonal enteries using the largest as a pivot.

check for absolute convergence are symmetric off diagonals all zero

loop over all the off-diagonals above the diagonal

value too small to pivot on

Definition at line 737 of file Mat3.h.

template<typename ResolvedMapType , typename OpType >
void openvdb::OPENVDB_VERSION_NAME::math::doProcessTypedMap ( Transform &  transform,
OpType &  op 
)
inline

Helper function used internally by processTypedMap()

Definition at line 201 of file Transform.h.

template<typename ResolvedMapType , typename OpType >
void openvdb::OPENVDB_VERSION_NAME::math::doProcessTypedMap ( const Transform &  transform,
OpType &  op 
)
inline

Helper function used internally by processTypedMap()

Definition at line 210 of file Transform.h.

int64_t openvdb::OPENVDB_VERSION_NAME::math::doubleToInt64 ( const double  d)
inline

Definition at line 489 of file Math.h.

std::string openvdb::OPENVDB_VERSION_NAME::math::dsSchemeToMenuName ( DScheme  dss)
inline

Definition at line 119 of file FiniteDifference.h.

std::string openvdb::OPENVDB_VERSION_NAME::math::dsSchemeToString ( DScheme  dss)
inline

Definition at line 53 of file FiniteDifference.h.

template<typename Type >
Type openvdb::OPENVDB_VERSION_NAME::math::EuclideanRemainder ( Type  x)
inline

Return the euclidean remainder of x. Note unlike % operator this will always return a positive result

Definition at line 829 of file Math.h.

template<class MatType >
Vec3<typename MatType::value_type> openvdb::OPENVDB_VERSION_NAME::math::eulerAngles ( const MatType &  mat,
RotationOrder  rotationOrder,
typename MatType::value_type  eps = static_cast<typename MatType::value_type>(1.0e-8) 
)

Return the Euler angles composing the given rotation matrix.

Optional axes arguments describe in what order elementary rotations are applied. Note that in our convention, XYZ means Rz * Ry * Rx. Because we are using rows rather than columns to represent the local axes of a coordinate frame, the interpretation from a local reference point of view is to first rotate about the x axis, then about the newly rotated y axis, and finally by the new local z axis. From a fixed reference point of view, the interpretation is to rotate about the stationary world z, y, and x axes respectively.

Irrespective of the Euler angle convention, in the case of distinct axes, eulerAngles() returns the x, y, and z angles in the corresponding x, y, z components of the returned Vec3. For the XZX convention, the left X value is returned in Vec3.x, and the right X value in Vec3.y. For the ZXZ convention the left Z value is returned in Vec3.z and the right Z value in Vec3.y

Examples of reconstructing r from its Euler angle decomposition

v = eulerAngles(r, ZYX_ROTATION); rx.setToRotation(Vec3d(1,0,0), v[0]); ry.setToRotation(Vec3d(0,1,0), v[1]); rz.setToRotation(Vec3d(0,0,1), v[2]); r = rx * ry * rz;

v = eulerAngles(r, ZXZ_ROTATION); rz1.setToRotation(Vec3d(0,0,1), v[2]); rx.setToRotation (Vec3d(1,0,0), v[0]); rz2.setToRotation(Vec3d(0,0,1), v[1]); r = rz2 * rx * rz1;

v = eulerAngles(r, XZX_ROTATION); rx1.setToRotation (Vec3d(1,0,0), v[0]); rx2.setToRotation (Vec3d(1,0,0), v[1]); rz.setToRotation (Vec3d(0,0,1), v[2]); r = rx2 * rz * rx1;

Definition at line 333 of file Mat.h.

template<typename T >
Vec2<T> openvdb::OPENVDB_VERSION_NAME::math::Exp ( Vec2< T >  v)
inline

Return a vector with the exponent applied to each of the components of the input vector.

Definition at line 523 of file Vec2.h.

template<typename T >
Vec4<T> openvdb::OPENVDB_VERSION_NAME::math::Exp ( Vec4< T >  v)
inline

Return a vector with the exponent applied to each of the components of the input vector.

Definition at line 552 of file Vec4.h.

template<typename T >
Vec3<T> openvdb::OPENVDB_VERSION_NAME::math::Exp ( Vec3< T >  v)
inline

Return a vector with the exponent applied to each of the components of the input vector.

Definition at line 654 of file Vec3.h.

template<typename Type >
Type openvdb::OPENVDB_VERSION_NAME::math::Exp ( const Type &  x)
inline

Return ex.

Definition at line 710 of file Math.h.

int32_t openvdb::OPENVDB_VERSION_NAME::math::floatToInt32 ( const float  f)
inline

Definition at line 479 of file Math.h.

int openvdb::OPENVDB_VERSION_NAME::math::Floor ( float  x)
inline

Return the floor of x.

Definition at line 848 of file Math.h.

int openvdb::OPENVDB_VERSION_NAME::math::Floor ( double  x)
inline

Return the floor of x.

Definition at line 849 of file Math.h.

int openvdb::OPENVDB_VERSION_NAME::math::Floor ( long double  x)
inline

Return the floor of x.

Definition at line 850 of file Math.h.

template<typename Type >
Type openvdb::OPENVDB_VERSION_NAME::math::FractionalPart ( Type  x)
inline

Return the fractional part of x.

Definition at line 843 of file Math.h.

template<class MatType >
Vec3<typename MatType::value_type> openvdb::OPENVDB_VERSION_NAME::math::getScale ( const MatType &  mat)

Return a Vec3 representing the lengths of the passed matrix's upper 3×3's rows.

Definition at line 633 of file Mat.h.

template<typename Real >
Real openvdb::OPENVDB_VERSION_NAME::math::GodunovsNormSqrd ( bool  isOutside,
Real  dP_xm,
Real  dP_xp,
Real  dP_ym,
Real  dP_yp,
Real  dP_zm,
Real  dP_zp 
)
inline

Definition at line 325 of file FiniteDifference.h.

template<typename Real >
Real openvdb::OPENVDB_VERSION_NAME::math::GodunovsNormSqrd ( bool  isOutside,
const Vec3< Real > &  gradient_m,
const Vec3< Real > &  gradient_p 
)
inline

Definition at line 351 of file FiniteDifference.h.

template<typename T >
bool openvdb::OPENVDB_VERSION_NAME::math::hasTranslation ( const Mat4< T > &  m)
inline

Definition at line 1309 of file Mat4.h.

template<typename Type >
Type openvdb::OPENVDB_VERSION_NAME::math::IntegerPart ( Type  x)
inline

Return the integer part of x.

Definition at line 835 of file Math.h.

template<typename Type >
Type openvdb::OPENVDB_VERSION_NAME::math::Inv ( Type  x)
inline

Return the inverse of x.

Definition at line 894 of file Math.h.

template<typename T >
bool openvdb::OPENVDB_VERSION_NAME::math::isAffine ( const Mat4< T > &  m)
inline

Definition at line 1304 of file Mat4.h.

template<typename Type >
bool openvdb::OPENVDB_VERSION_NAME::math::isApproxEqual ( const Type &  a,
const Type &  b,
const Type &  tolerance 
)
inline

Return true if a is equal to b to within the given tolerance.

Definition at line 406 of file Math.h.

template<typename Type >
bool openvdb::OPENVDB_VERSION_NAME::math::isApproxEqual ( const Type &  a,
const Type &  b 
)
inline

Return true if a is equal to b to within the default floating-point comparison tolerance.

Definition at line 415 of file Math.h.

template<typename T >
bool openvdb::OPENVDB_VERSION_NAME::math::isApproxEqual ( const Vec2< T > &  a,
const Vec2< T > &  b 
)
inline

Definition at line 454 of file Vec2.h.

template<typename T >
bool openvdb::OPENVDB_VERSION_NAME::math::isApproxEqual ( const Vec2< T > &  a,
const Vec2< T > &  b,
const Vec2< T > &  eps 
)
inline

Definition at line 460 of file Vec2.h.

template<typename T >
bool openvdb::OPENVDB_VERSION_NAME::math::isApproxEqual ( const Vec4< T > &  a,
const Vec4< T > &  b 
)
inline

Definition at line 501 of file Vec4.h.

template<typename T >
bool openvdb::OPENVDB_VERSION_NAME::math::isApproxEqual ( const Vec4< T > &  a,
const Vec4< T > &  b,
const Vec4< T > &  eps 
)
inline

Definition at line 507 of file Vec4.h.

template<typename T >
bool openvdb::OPENVDB_VERSION_NAME::math::isApproxEqual ( const Vec3< T > &  a,
const Vec3< T > &  b 
)
inline

Definition at line 576 of file Vec3.h.

template<typename T >
bool openvdb::OPENVDB_VERSION_NAME::math::isApproxEqual ( const Vec3< T > &  a,
const Vec3< T > &  b,
const Vec3< T > &  eps 
)
inline

Definition at line 582 of file Vec3.h.

template<typename Type >
bool openvdb::OPENVDB_VERSION_NAME::math::isApproxLarger ( const Type &  a,
const Type &  b,
const Type &  tolerance 
)
inline

Return true if a is larger than b to within the given tolerance, i.e., if b - a < tolerance.

Definition at line 434 of file Math.h.

template<typename Type >
bool openvdb::OPENVDB_VERSION_NAME::math::isApproxZero ( const Type &  x)
inline

Return true if x is equal to zero to within the default floating-point comparison tolerance.

Definition at line 349 of file Math.h.

template<typename Type >
bool openvdb::OPENVDB_VERSION_NAME::math::isApproxZero ( const Type &  x,
const Type &  tolerance 
)
inline

Return true if x is equal to zero to within the given tolerance.

Definition at line 358 of file Math.h.

template<typename MatType >
bool openvdb::OPENVDB_VERSION_NAME::math::isDiagonal ( const MatType &  mat)
inline

Determine if a matrix is diagonal.

Definition at line 902 of file Mat.h.

template<typename T0 , typename T1 >
bool openvdb::OPENVDB_VERSION_NAME::math::isExactlyEqual ( const T0 &  a,
const T1 &  b 
)
inline

Return true if a is exactly equal to b.

Definition at line 443 of file Math.h.

template<int SIZE, typename T >
bool openvdb::OPENVDB_VERSION_NAME::math::isFinite ( const Tuple< SIZE, T > &  t)
inline

Return true if no Nan or Inf values are present.

Definition at line 218 of file Tuple.h.

bool openvdb::OPENVDB_VERSION_NAME::math::isFinite ( const float  x)
inline

Return true if x is finite.

Definition at line 375 of file Math.h.

template<typename Type , typename std::enable_if< std::is_arithmetic< Type >::value, int >::type = 0>
bool openvdb::OPENVDB_VERSION_NAME::math::isFinite ( const Type &  x)
inline

Return true if x is finite.

Definition at line 380 of file Math.h.

template<typename MatType >
bool openvdb::OPENVDB_VERSION_NAME::math::isIdentity ( const MatType &  m)
inline

Determine if a matrix is an identity matrix.

Definition at line 860 of file Mat.h.

template<int SIZE, typename T >
bool openvdb::OPENVDB_VERSION_NAME::math::isInfinite ( const Tuple< SIZE, T > &  t)
inline

Return true if an Inf is present in the tuple.

Definition at line 214 of file Tuple.h.

bool openvdb::OPENVDB_VERSION_NAME::math::isInfinite ( const float  x)
inline

Return true if x is an infinity value (either positive infinity or negative infinity).

Definition at line 385 of file Math.h.

template<typename Type , typename std::enable_if< std::is_arithmetic< Type >::value, int >::type = 0>
bool openvdb::OPENVDB_VERSION_NAME::math::isInfinite ( const Type &  x)
inline

Return true if x is an infinity value (either positive infinity or negative infinity).

Definition at line 390 of file Math.h.

template<typename MatType >
bool openvdb::OPENVDB_VERSION_NAME::math::isInvertible ( const MatType &  m)
inline

Determine if a matrix is invertible.

Definition at line 869 of file Mat.h.

template<int SIZE, typename T >
bool openvdb::OPENVDB_VERSION_NAME::math::isNan ( const Tuple< SIZE, T > &  t)
inline

Return true if a Nan is present in the tuple.

Definition at line 210 of file Tuple.h.

bool openvdb::OPENVDB_VERSION_NAME::math::isNan ( const float  x)
inline

Return true if x is a NaN (Not-A-Number) value.

Definition at line 395 of file Math.h.

template<typename Type , typename std::enable_if< std::is_arithmetic< Type >::value, int >::type = 0>
bool openvdb::OPENVDB_VERSION_NAME::math::isNan ( const Type &  x)
inline

Return true if x is a NaN (Not-A-Number) value.

Definition at line 400 of file Math.h.

template<typename Type >
bool openvdb::OPENVDB_VERSION_NAME::math::isNegative ( const Type &  x)
inline

Return true if x is less than zero.

Definition at line 367 of file Math.h.

template<>
bool openvdb::OPENVDB_VERSION_NAME::math::isNegative< bool > ( const bool &  )
inline

Definition at line 370 of file Math.h.

template<typename Type >
bool openvdb::OPENVDB_VERSION_NAME::math::isRelOrApproxEqual ( const Type &  a,
const Type &  b,
const Type &  absTol,
const Type &  relTol 
)
inline

Definition at line 453 of file Math.h.

template<>
bool openvdb::OPENVDB_VERSION_NAME::math::isRelOrApproxEqual ( const bool &  a,
const bool &  b,
const bool &  ,
const bool &   
)
inline

Definition at line 473 of file Math.h.

template<typename MatType >
bool openvdb::OPENVDB_VERSION_NAME::math::isSymmetric ( const MatType &  m)
inline

Determine if a matrix is symmetric.

This implicitly uses math::isApproxEqual() to determine equality.

Definition at line 880 of file Mat.h.

bool openvdb::OPENVDB_VERSION_NAME::math::isUlpsEqual ( const double  aLeft,
const double  aRight,
const int64_t  aUnitsInLastPlace 
)
inline

Definition at line 503 of file Math.h.

bool openvdb::OPENVDB_VERSION_NAME::math::isUlpsEqual ( const float  aLeft,
const float  aRight,
const int32_t  aUnitsInLastPlace 
)
inline

Definition at line 522 of file Math.h.

template<typename MatType >
bool openvdb::OPENVDB_VERSION_NAME::math::isUnitary ( const MatType &  m)
inline

Determine if a matrix is unitary (i.e., rotation or reflection).

Definition at line 889 of file Mat.h.

template<int SIZE, typename T >
bool openvdb::OPENVDB_VERSION_NAME::math::isZero ( const Tuple< SIZE, T > &  t)
inline

Return true if all elements are exactly equal to zero.

Definition at line 222 of file Tuple.h.

template<typename Type >
bool openvdb::OPENVDB_VERSION_NAME::math::isZero ( const Type &  x)
inline

Return true if x is exactly equal to zero.

Definition at line 337 of file Math.h.

template<typename MatType >
MatType::ValueType openvdb::OPENVDB_VERSION_NAME::math::lInfinityNorm ( const MatType &  matrix)

Return the L norm of an N×N matrix.

Definition at line 920 of file Mat.h.

template<typename T >
Vec2<T> openvdb::OPENVDB_VERSION_NAME::math::Log ( Vec2< T >  v)
inline

Return a vector with log applied to each of the components of the input vector.

Definition at line 528 of file Vec2.h.

template<typename T >
Vec4<T> openvdb::OPENVDB_VERSION_NAME::math::Log ( Vec4< T >  v)
inline

Return a vector with log applied to each of the components of the input vector.

Definition at line 557 of file Vec4.h.

template<typename T >
Vec3<T> openvdb::OPENVDB_VERSION_NAME::math::Log ( Vec3< T >  v)
inline

Return a vector with log applied to each of the components of the input vector.

Definition at line 659 of file Vec3.h.

template<typename MatType >
MatType::ValueType openvdb::OPENVDB_VERSION_NAME::math::lOneNorm ( const MatType &  matrix)

Return the L1 norm of an N×N matrix.

Definition at line 941 of file Mat.h.

template<typename Type >
const Type& openvdb::OPENVDB_VERSION_NAME::math::Max ( const Type &  a,
const Type &  b 
)
inline

Return the maximum of two values.

Definition at line 595 of file Math.h.

template<typename Type >
const Type& openvdb::OPENVDB_VERSION_NAME::math::Max ( const Type &  a,
const Type &  b,
const Type &  c 
)
inline

Return the maximum of three values.

Definition at line 603 of file Math.h.

template<typename Type >
const Type& openvdb::OPENVDB_VERSION_NAME::math::Max ( const Type &  a,
const Type &  b,
const Type &  c,
const Type &  d 
)
inline

Return the maximum of four values.

Definition at line 611 of file Math.h.

template<typename Type >
const Type& openvdb::OPENVDB_VERSION_NAME::math::Max ( const Type &  a,
const Type &  b,
const Type &  c,
const Type &  d,
const Type &  e 
)
inline

Return the maximum of five values.

Definition at line 619 of file Math.h.

template<typename Type >
const Type& openvdb::OPENVDB_VERSION_NAME::math::Max ( const Type &  a,
const Type &  b,
const Type &  c,
const Type &  d,
const Type &  e,
const Type &  f 
)
inline

Return the maximum of six values.

Definition at line 627 of file Math.h.

template<typename Type >
const Type& openvdb::OPENVDB_VERSION_NAME::math::Max ( const Type &  a,
const Type &  b,
const Type &  c,
const Type &  d,
const Type &  e,
const Type &  f,
const Type &  g 
)
inline

Return the maximum of seven values.

Definition at line 635 of file Math.h.

template<typename Type >
const Type& openvdb::OPENVDB_VERSION_NAME::math::Max ( const Type &  a,
const Type &  b,
const Type &  c,
const Type &  d,
const Type &  e,
const Type &  f,
const Type &  g,
const Type &  h 
)
inline

Return the maximum of eight values.

Definition at line 644 of file Math.h.

template<typename T >
Vec2<T> openvdb::OPENVDB_VERSION_NAME::math::maxComponent ( const Vec2< T > &  v1,
const Vec2< T > &  v2 
)
inline

Return component-wise maximum of the two vectors.

Definition at line 513 of file Vec2.h.

template<typename T >
Vec4<T> openvdb::OPENVDB_VERSION_NAME::math::maxComponent ( const Vec4< T > &  v1,
const Vec4< T > &  v2 
)
inline

Return component-wise maximum of the two vectors.

Definition at line 540 of file Vec4.h.

template<typename T >
Vec3<T> openvdb::OPENVDB_VERSION_NAME::math::maxComponent ( const Vec3< T > &  v1,
const Vec3< T > &  v2 
)
inline

Return component-wise maximum of the two vectors.

Definition at line 643 of file Vec3.h.

template<typename Vec3T >
size_t openvdb::OPENVDB_VERSION_NAME::math::MaxIndex ( const Vec3T &  v)

Return the index [0,1,2] of the largest value in a 3D vector.

Note
This methods assumes operator[] exists.

The return value corresponds to the largest index of the of the largest vector components.

Definition at line 947 of file Math.h.

template<typename Type >
const Type& openvdb::OPENVDB_VERSION_NAME::math::Min ( const Type &  a,
const Type &  b 
)
inline

Return the minimum of two values.

Definition at line 656 of file Math.h.

template<typename Type >
const Type& openvdb::OPENVDB_VERSION_NAME::math::Min ( const Type &  a,
const Type &  b,
const Type &  c 
)
inline

Return the minimum of three values.

Definition at line 661 of file Math.h.

template<typename Type >
const Type& openvdb::OPENVDB_VERSION_NAME::math::Min ( const Type &  a,
const Type &  b,
const Type &  c,
const Type &  d 
)
inline

Return the minimum of four values.

Definition at line 666 of file Math.h.

template<typename Type >
const Type& openvdb::OPENVDB_VERSION_NAME::math::Min ( const Type &  a,
const Type &  b,
const Type &  c,
const Type &  d,
const Type &  e 
)
inline

Return the minimum of five values.

Definition at line 674 of file Math.h.

template<typename Type >
const Type& openvdb::OPENVDB_VERSION_NAME::math::Min ( const Type &  a,
const Type &  b,
const Type &  c,
const Type &  d,
const Type &  e,
const Type &  f 
)
inline

Return the minimum of six values.

Definition at line 682 of file Math.h.

template<typename Type >
const Type& openvdb::OPENVDB_VERSION_NAME::math::Min ( const Type &  a,
const Type &  b,
const Type &  c,
const Type &  d,
const Type &  e,
const Type &  f,
const Type &  g 
)
inline

Return the minimum of seven values.

Definition at line 690 of file Math.h.

template<typename Type >
const Type& openvdb::OPENVDB_VERSION_NAME::math::Min ( const Type &  a,
const Type &  b,
const Type &  c,
const Type &  d,
const Type &  e,
const Type &  f,
const Type &  g,
const Type &  h 
)
inline

Return the minimum of eight values.

Definition at line 699 of file Math.h.

template<typename T >
Vec2<T> openvdb::OPENVDB_VERSION_NAME::math::minComponent ( const Vec2< T > &  v1,
const Vec2< T > &  v2 
)
inline

Return component-wise minimum of the two vectors.

Remarks
We are switching to a more explicit name because the semantics are different from std::min/max. In that case, the function returns a reference to one of the objects based on a comparator. Here, we must fabricate a new object which might not match either of the inputs.

Definition at line 504 of file Vec2.h.

template<typename T >
Vec4<T> openvdb::OPENVDB_VERSION_NAME::math::minComponent ( const Vec4< T > &  v1,
const Vec4< T > &  v2 
)
inline

Return component-wise minimum of the two vectors.

Remarks
We are switching to a more explicit name because the semantics are different from std::min/max. In that case, the function returns a reference to one of the objects based on a comparator. Here, we must fabricate a new object which might not match either of the inputs.

Definition at line 529 of file Vec4.h.

template<typename T >
Vec3<T> openvdb::OPENVDB_VERSION_NAME::math::minComponent ( const Vec3< T > &  v1,
const Vec3< T > &  v2 
)
inline

Return component-wise minimum of the two vectors.

Remarks
We are switching to a more explicit name because the semantics are different from std::min/max. In that case, the function returns a reference to one of the objects based on a comparator. Here, we must fabricate a new object which might not match either of the inputs.

Definition at line 633 of file Vec3.h.

template<typename Vec3T >
size_t openvdb::OPENVDB_VERSION_NAME::math::MinIndex ( const Vec3T &  v)

Return the index [0,1,2] of the smallest value in a 3D vector.

Note
This methods assumes operator[] exists.

The return value corresponds to the largest index of the of the smallest vector components.

Definition at line 931 of file Math.h.

int openvdb::OPENVDB_VERSION_NAME::math::Mod ( int  x,
int  y 
)
inline

Return the remainder of x / y.

Definition at line 777 of file Math.h.

float openvdb::OPENVDB_VERSION_NAME::math::Mod ( float  x,
float  y 
)
inline

Return the remainder of x / y.

Definition at line 778 of file Math.h.

double openvdb::OPENVDB_VERSION_NAME::math::Mod ( double  x,
double  y 
)
inline

Return the remainder of x / y.

Definition at line 779 of file Math.h.

long double openvdb::OPENVDB_VERSION_NAME::math::Mod ( long double  x,
long double  y 
)
inline

Return the remainder of x / y.

Definition at line 780 of file Math.h.

template<typename T >
T openvdb::OPENVDB_VERSION_NAME::math::negative ( const T &  val)
inline

Return the unary negation of the given value.

Note
A negative<T>() specialization must be defined for each ValueType T for which unary negation is not defined.

Definition at line 128 of file Math.h.

template<>
bool openvdb::OPENVDB_VERSION_NAME::math::negative ( const bool &  val)
inline

Return the negation of the given boolean.

Definition at line 141 of file Math.h.

template<>
std::string openvdb::OPENVDB_VERSION_NAME::math::negative ( const std::string val)
inline

Return the "negation" of the given string.

Definition at line 143 of file Math.h.

template<typename T0 , typename T1 >
bool openvdb::OPENVDB_VERSION_NAME::math::operator!= ( const Vec4< T0 > &  v0,
const Vec4< T1 > &  v1 
)
inline

Inequality operator, does exact floating point comparisons.

Definition at line 408 of file Vec4.h.

template<typename T0 , typename T1 >
bool openvdb::OPENVDB_VERSION_NAME::math::operator!= ( const Vec3< T0 > &  v0,
const Vec3< T1 > &  v1 
)
inline

Inequality operator, does exact floating point comparisons.

Definition at line 481 of file Vec3.h.

template<typename S , typename T >
Vec2<typename promote<S, T>::type> openvdb::OPENVDB_VERSION_NAME::math::operator* ( scalar,
const Vec2< T > &  v 
)
inline

Multiply each element of the given vector by scalar and return the result.

Definition at line 361 of file Vec2.h.

template<typename S , typename T >
Vec2<typename promote<S, T>::type> openvdb::OPENVDB_VERSION_NAME::math::operator* ( const Vec2< T > &  v,
scalar 
)
inline

Multiply each element of the given vector by scalar and return the result.

Definition at line 368 of file Vec2.h.

template<typename T0 , typename T1 >
Vec2<typename promote<T0, T1>::type> openvdb::OPENVDB_VERSION_NAME::math::operator* ( const Vec2< T0 > &  v0,
const Vec2< T1 > &  v1 
)
inline

Multiply corresponding elements of v0 and v1 and return the result.

Definition at line 377 of file Vec2.h.

template<typename S , typename T >
Vec4<typename promote<S, T>::type> openvdb::OPENVDB_VERSION_NAME::math::operator* ( scalar,
const Vec4< T > &  v 
)
inline

Multiply each element of the given vector by scalar and return the result.

Definition at line 412 of file Vec4.h.

template<typename S , typename T >
Vec4<typename promote<S, T>::type> openvdb::OPENVDB_VERSION_NAME::math::operator* ( const Vec4< T > &  v,
scalar 
)
inline

Multiply each element of the given vector by scalar and return the result.

Definition at line 417 of file Vec4.h.

template<typename T0 , typename T1 >
Vec4<typename promote<T0, T1>::type> openvdb::OPENVDB_VERSION_NAME::math::operator* ( const Vec4< T0 > &  v0,
const Vec4< T1 > &  v1 
)
inline

Multiply corresponding elements of v0 and v1 and return the result.

Definition at line 426 of file Vec4.h.

template<typename S , typename T >
Vec3<typename promote<S, T>::type> openvdb::OPENVDB_VERSION_NAME::math::operator* ( scalar,
const Vec3< T > &  v 
)
inline

Multiply each element of the given vector by scalar and return the result.

Definition at line 485 of file Vec3.h.

template<typename S , typename T >
Vec3<typename promote<S, T>::type> openvdb::OPENVDB_VERSION_NAME::math::operator* ( const Vec3< T > &  v,
scalar 
)
inline

Multiply each element of the given vector by scalar and return the result.

Definition at line 489 of file Vec3.h.

template<typename T0 , typename T1 >
Vec3<typename promote<T0, T1>::type> openvdb::OPENVDB_VERSION_NAME::math::operator* ( const Vec3< T0 > &  v0,
const Vec3< T1 > &  v1 
)
inline

Multiply corresponding elements of v0 and v1 and return the result.

Definition at line 498 of file Vec3.h.

template<typename S , typename T >
Quat<T> openvdb::OPENVDB_VERSION_NAME::math::operator* ( scalar,
const Quat< T > &  q 
)

Multiply each element of the given quaternion by scalar and return the result.

Definition at line 552 of file Quat.h.

template<typename T0 , typename T1 >
Mat3<typename promote<T0, T1>::type> openvdb::OPENVDB_VERSION_NAME::math::operator* ( const Mat3< T0 > &  m0,
const Mat3< T1 > &  m1 
)

Multiply m0 by m1 and return the resulting matrix.

Definition at line 597 of file Mat3.h.

std::string openvdb::OPENVDB_VERSION_NAME::math::operator+ ( const std::string s,
bool   
)
inline

Needed to support the (zeroVal<ValueType>() + val) idiom when ValueType is std::string.

Todo:
These won't be needed if we eliminate StringGrids.

Definition at line 82 of file Math.h.

std::string openvdb::OPENVDB_VERSION_NAME::math::operator+ ( const std::string s,
int   
)
inline

Needed to support the (zeroVal<ValueType>() + val) idiom when ValueType is std::string.

Todo:
These won't be needed if we eliminate StringGrids.

Definition at line 83 of file Math.h.

std::string openvdb::OPENVDB_VERSION_NAME::math::operator+ ( const std::string s,
float   
)
inline

Needed to support the (zeroVal<ValueType>() + val) idiom when ValueType is std::string.

Todo:
These won't be needed if we eliminate StringGrids.

Definition at line 84 of file Math.h.

std::string openvdb::OPENVDB_VERSION_NAME::math::operator+ ( const std::string s,
double   
)
inline

Needed to support the (zeroVal<ValueType>() + val) idiom when ValueType is std::string.

Todo:
These won't be needed if we eliminate StringGrids.

Definition at line 85 of file Math.h.

template<typename T0 , typename T1 >
Vec2<typename promote<T0, T1>::type> openvdb::OPENVDB_VERSION_NAME::math::operator+ ( const Vec2< T0 > &  v0,
const Vec2< T1 > &  v1 
)
inline

Add corresponding elements of v0 and v1 and return the result.

Definition at line 409 of file Vec2.h.

template<typename S , typename T >
Vec2<typename promote<S, T>::type> openvdb::OPENVDB_VERSION_NAME::math::operator+ ( const Vec2< T > &  v,
scalar 
)
inline

Add scalar to each element of the given vector and return the result.

Definition at line 418 of file Vec2.h.

template<typename T0 , typename T1 >
Vec4<typename promote<T0, T1>::type> openvdb::OPENVDB_VERSION_NAME::math::operator+ ( const Vec4< T0 > &  v0,
const Vec4< T1 > &  v1 
)
inline

Add corresponding elements of v0 and v1 and return the result.

Definition at line 465 of file Vec4.h.

template<typename S , typename T >
Vec4<typename promote<S, T>::type> openvdb::OPENVDB_VERSION_NAME::math::operator+ ( const Vec4< T > &  v,
scalar 
)
inline

Add scalar to each element of the given vector and return the result.

Definition at line 474 of file Vec4.h.

template<typename T >
Vec3<typename promote<T, typename Coord::ValueType>::type> openvdb::OPENVDB_VERSION_NAME::math::operator+ ( const Vec3< T > &  v0,
const Coord &  v1 
)
inline

Allow a Coord to be added to or subtracted from a Vec3.

Definition at line 527 of file Coord.h.

template<typename T0 , typename T1 >
Vec3<typename promote<T0, T1>::type> openvdb::OPENVDB_VERSION_NAME::math::operator+ ( const Vec3< T0 > &  v0,
const Vec3< T1 > &  v1 
)
inline

Add corresponding elements of v0 and v1 and return the result.

Definition at line 531 of file Vec3.h.

template<typename T >
Vec3<typename promote<T, typename Coord::ValueType>::type> openvdb::OPENVDB_VERSION_NAME::math::operator+ ( const Coord &  v1,
const Vec3< T > &  v0 
)
inline

Allow a Coord to be added to or subtracted from a Vec3.

Definition at line 538 of file Coord.h.

template<typename S , typename T >
Vec3<typename promote<S, T>::type> openvdb::OPENVDB_VERSION_NAME::math::operator+ ( const Vec3< T > &  v,
scalar 
)
inline

Add scalar to each element of the given vector and return the result.

Definition at line 540 of file Vec3.h.

template<typename T0 , typename T1 >
Vec2<typename promote<T0, T1>::type> openvdb::OPENVDB_VERSION_NAME::math::operator- ( const Vec2< T0 > &  v0,
const Vec2< T1 > &  v1 
)
inline

Subtract corresponding elements of v0 and v1 and return the result.

Definition at line 427 of file Vec2.h.

template<typename S , typename T >
Vec2<typename promote<S, T>::type> openvdb::OPENVDB_VERSION_NAME::math::operator- ( const Vec2< T > &  v,
scalar 
)
inline

Subtract scalar from each element of the given vector and return the result.

Definition at line 436 of file Vec2.h.

template<typename T0 , typename T1 >
Vec4<typename promote<T0, T1>::type> openvdb::OPENVDB_VERSION_NAME::math::operator- ( const Vec4< T0 > &  v0,
const Vec4< T1 > &  v1 
)
inline

Subtract corresponding elements of v0 and v1 and return the result.

Definition at line 483 of file Vec4.h.

template<typename S , typename T >
Vec4<typename promote<S, T>::type> openvdb::OPENVDB_VERSION_NAME::math::operator- ( const Vec4< T > &  v,
scalar 
)
inline

Subtract scalar from each element of the given vector and return the result.

Definition at line 492 of file Vec4.h.

template<typename T0 , typename T1 >
Vec3<typename promote<T0, T1>::type> openvdb::OPENVDB_VERSION_NAME::math::operator- ( const Vec3< T0 > &  v0,
const Vec3< T1 > &  v1 
)
inline

Subtract corresponding elements of v0 and v1 and return the result.

Definition at line 549 of file Vec3.h.

template<typename T >
Vec3<typename promote<T, Coord::ValueType>::type> openvdb::OPENVDB_VERSION_NAME::math::operator- ( const Vec3< T > &  v0,
const Coord &  v1 
)
inline

Allow a Coord to be subtracted from a Vec3.

Definition at line 553 of file Coord.h.

template<typename S , typename T >
Vec3<typename promote<S, T>::type> openvdb::OPENVDB_VERSION_NAME::math::operator- ( const Vec3< T > &  v,
scalar 
)
inline

Subtract scalar from each element of the given vector and return the result.

Definition at line 558 of file Vec3.h.

template<typename T >
Vec3<typename promote<T, Coord::ValueType>::type> openvdb::OPENVDB_VERSION_NAME::math::operator- ( const Coord &  v1,
const Vec3< T > &  v0 
)
inline

Allow a Coord to be subtracted from a Vec3.

Definition at line 564 of file Coord.h.

template<typename S , typename T >
Vec2<typename promote<S, T>::type> openvdb::OPENVDB_VERSION_NAME::math::operator/ ( scalar,
const Vec2< T > &  v 
)
inline

Divide scalar by each element of the given vector and return the result.

Definition at line 385 of file Vec2.h.

template<typename S , typename T >
Vec2<typename promote<S, T>::type> openvdb::OPENVDB_VERSION_NAME::math::operator/ ( const Vec2< T > &  v,
scalar 
)
inline

Divide each element of the given vector by scalar and return the result.

Definition at line 392 of file Vec2.h.

template<typename T0 , typename T1 >
Vec2<typename promote<T0, T1>::type> openvdb::OPENVDB_VERSION_NAME::math::operator/ ( const Vec2< T0 > &  v0,
const Vec2< T1 > &  v1 
)
inline

Divide corresponding elements of v0 and v1 and return the result.

Definition at line 401 of file Vec2.h.

template<typename S , typename T >
Vec4<typename promote<S, T>::type> openvdb::OPENVDB_VERSION_NAME::math::operator/ ( scalar,
const Vec4< T > &  v 
)
inline

Divide scalar by each element of the given vector and return the result.

Definition at line 437 of file Vec4.h.

template<typename S , typename T >
Vec4<typename promote<S, T>::type> openvdb::OPENVDB_VERSION_NAME::math::operator/ ( const Vec4< T > &  v,
scalar 
)
inline

Divide each element of the given vector by scalar and return the result.

Definition at line 447 of file Vec4.h.

template<typename T0 , typename T1 >
Vec4<typename promote<T0, T1>::type> openvdb::OPENVDB_VERSION_NAME::math::operator/ ( const Vec4< T0 > &  v0,
const Vec4< T1 > &  v1 
)
inline

Divide corresponding elements of v0 and v1 and return the result.

Definition at line 456 of file Vec4.h.

template<typename S , typename T >
Vec3<typename promote<S, T>::type> openvdb::OPENVDB_VERSION_NAME::math::operator/ ( scalar,
const Vec3< T > &  v 
)
inline

Divide scalar by each element of the given vector and return the result.

Definition at line 507 of file Vec3.h.

template<typename S , typename T >
Vec3<typename promote<S, T>::type> openvdb::OPENVDB_VERSION_NAME::math::operator/ ( const Vec3< T > &  v,
scalar 
)
inline

Divide each element of the given vector by scalar and return the result.

Definition at line 514 of file Vec3.h.

template<typename T0 , typename T1 >
Vec3<typename promote<T0, T1>::type> openvdb::OPENVDB_VERSION_NAME::math::operator/ ( const Vec3< T0 > &  v0,
const Vec3< T1 > &  v1 
)
inline

Divide corresponding elements of v0 and v1 and return the result.

Definition at line 523 of file Vec3.h.

template<int SIZE, typename T0 , typename T1 >
bool openvdb::OPENVDB_VERSION_NAME::math::operator< ( const Tuple< SIZE, T0 > &  t0,
const Tuple< SIZE, T1 > &  t1 
)
Returns
true if t0 < t1, comparing components in order of significance.

Definition at line 174 of file Tuple.h.

template<typename RayT , Index Log2Dim>
std::ostream& openvdb::OPENVDB_VERSION_NAME::math::operator<< ( std::ostream &  os,
const DDA< RayT, Log2Dim > &  dda 
)
inline

Output streaming of the Ray class.

Note
Primarily intended for debugging.

Definition at line 131 of file DDA.h.

OPENVDB_API std::ostream& openvdb::OPENVDB_VERSION_NAME::math::operator<< ( std::ostream &  ,
const Transform &   
)
template<int SIZE, typename T >
std::ostream& openvdb::OPENVDB_VERSION_NAME::math::operator<< ( std::ostream &  ostr,
const Tuple< SIZE, T > &  classname 
)

Write a Tuple to an output stream.

Definition at line 229 of file Tuple.h.

template<typename RealT >
std::ostream& openvdb::OPENVDB_VERSION_NAME::math::operator<< ( std::ostream &  os,
const Ray< RealT > &  r 
)
inline

Output streaming of the Ray class.

Note
Primarily intended for debugging.

Definition at line 300 of file Ray.h.

template<typename Vec3T >
std::ostream& openvdb::OPENVDB_VERSION_NAME::math::operator<< ( std::ostream &  os,
const BBox< Vec3T > &  b 
)
inline

Definition at line 413 of file BBox.h.

std::ostream& openvdb::OPENVDB_VERSION_NAME::math::operator<< ( std::ostream &  os,
const Coord &  xyz 
)
inline

Definition at line 510 of file Coord.h.

std::ostream& openvdb::OPENVDB_VERSION_NAME::math::operator<< ( std::ostream &  os,
const CoordBBox &  b 
)
inline

Definition at line 575 of file Coord.h.

template<typename T0 , typename T1 >
bool openvdb::OPENVDB_VERSION_NAME::math::operator== ( const Vec4< T0 > &  v0,
const Vec4< T1 > &  v1 
)
inline

Equality operator, does exact floating point comparisons.

Definition at line 397 of file Vec4.h.

template<typename T0 , typename T1 >
bool openvdb::OPENVDB_VERSION_NAME::math::operator== ( const Vec3< T0 > &  v0,
const Vec3< T1 > &  v1 
)
inline

Equality operator, does exact floating point comparisons.

Definition at line 473 of file Vec3.h.

template<int SIZE, typename T0 , typename T1 >
bool openvdb::OPENVDB_VERSION_NAME::math::operator> ( const Tuple< SIZE, T0 > &  t0,
const Tuple< SIZE, T1 > &  t1 
)
Returns
true if t0 > t1, comparing components in order of significance.

Definition at line 186 of file Tuple.h.

template<typename T >
void openvdb::OPENVDB_VERSION_NAME::math::orthonormalize ( Vec2< T > &  v1,
Vec2< T > &  v2 
)
inline

Orthonormalize vectors v1 and v2 and store back the resulting basis e.g. Vec2f::orthonormalize(v1,v2);

Definition at line 476 of file Vec2.h.

template<typename T >
void openvdb::OPENVDB_VERSION_NAME::math::orthonormalize ( Vec3< T > &  v1,
Vec3< T > &  v2,
Vec3< T > &  v3 
)
inline

Orthonormalize vectors v1, v2 and v3 and store back the resulting basis e.g. Vec3d::orthonormalize(v1,v2,v3);

Definition at line 599 of file Vec3.h.

template<typename T >
Mat3<T> openvdb::OPENVDB_VERSION_NAME::math::outerProduct ( const Vec3< T > &  v1,
const Vec3< T > &  v2 
)

Returns outer product of v1, v2, i.e. v1 v2^T if v1 and v2 are column vectors, e.g. M = Mat3f::outerproduct(v1,v2);

Definition at line 643 of file Mat3.h.

template<class MatType >
MatType& openvdb::OPENVDB_VERSION_NAME::math::padMat4 ( MatType &  dest)
inline

Write 0s along Mat4's last row and column, and a 1 on its diagonal.

Useful initialization when we're initializing just the 3×3 block.

Definition at line 783 of file Mat.h.

template<typename T >
constexpr T openvdb::OPENVDB_VERSION_NAME::math::pi ( )
inline

Pi constant taken from Boost to match old behaviour.

Note
Available in C++20

Definition at line 119 of file Math.h.

template<>
constexpr float openvdb::OPENVDB_VERSION_NAME::math::pi ( )
inline

Definition at line 120 of file Math.h.

template<>
constexpr double openvdb::OPENVDB_VERSION_NAME::math::pi ( )
inline

Definition at line 121 of file Math.h.

template<>
constexpr long double openvdb::OPENVDB_VERSION_NAME::math::pi ( )
inline

Definition at line 122 of file Math.h.

template<typename MatType >
bool openvdb::OPENVDB_VERSION_NAME::math::polarDecomposition ( const MatType &  input,
MatType &  unitary,
MatType &  positive_hermitian,
unsigned int  MAX_ITERATIONS = 100 
)

Decompose an invertible 3×3 matrix into a unitary matrix followed by a symmetric matrix (positive semi-definite Hermitian), i.e., M = U * S.

If det(U) = 1 it is a rotation, otherwise det(U) = -1, meaning there is some part reflection. See "Computing the polar decomposition with applications" Higham, N.J. - SIAM J. Sc. Stat Comput 7(4):1160-1174

this generally converges in less than ten iterations

Definition at line 968 of file Mat.h.

template<typename Type >
Type openvdb::OPENVDB_VERSION_NAME::math::Pow ( Type  x,
int  n 
)

Return xn.

Definition at line 561 of file Math.h.

float openvdb::OPENVDB_VERSION_NAME::math::Pow ( float  b,
float  e 
)
inline

Return be.

Definition at line 575 of file Math.h.

double openvdb::OPENVDB_VERSION_NAME::math::Pow ( double  b,
double  e 
)
inline

Return be.

Definition at line 582 of file Math.h.

template<typename Type >
Type openvdb::OPENVDB_VERSION_NAME::math::Pow2 ( Type  x)
inline

Return x2.

Definition at line 548 of file Math.h.

template<typename Type >
Type openvdb::OPENVDB_VERSION_NAME::math::Pow3 ( Type  x)
inline

Return x3.

Definition at line 552 of file Math.h.

template<typename Type >
Type openvdb::OPENVDB_VERSION_NAME::math::Pow4 ( Type  x)
inline

Return x4.

Definition at line 556 of file Math.h.

template<typename T , typename T0 >
Mat3<T> openvdb::OPENVDB_VERSION_NAME::math::powLerp ( const Mat3< T0 > &  m1,
const Mat3< T0 > &  m2,
t 
)

Interpolate the rotation between m1 and m2 using Mat::powSolve. Unlike slerp, translation is not treated independently. This results in smoother animation results.

Definition at line 655 of file Mat3.h.

template<typename MatType >
void openvdb::OPENVDB_VERSION_NAME::math::powSolve ( const MatType &  aA,
MatType &  aB,
double  aPower,
double  aTol = 0.01 
)
inline

Definition at line 822 of file Mat.h.

template<typename T >
auto openvdb::OPENVDB_VERSION_NAME::math::PrintCast ( const T &  val) -> typename std::enable_if<!std::is_same<T, int8_t>::value && !std::is_same<T, uint8_t>::value, const T&>::type
inline

8-bit integer values print to std::ostreams as characters. Cast them so that they print as integers instead.

Definition at line 882 of file Math.h.

int32_t openvdb::OPENVDB_VERSION_NAME::math::PrintCast ( int8_t  val)
inline

Definition at line 884 of file Math.h.

uint32_t openvdb::OPENVDB_VERSION_NAME::math::PrintCast ( uint8_t  val)
inline

Definition at line 885 of file Math.h.

template<typename TransformType , typename OpType >
bool openvdb::OPENVDB_VERSION_NAME::math::processTypedMap ( TransformType &  transform,
OpType &  op 
)

Utility function that, given a generic map pointer, calls a functor on the fully-resoved map.

Usage:

struct Foo {
template<typename MapT>
void operator()(const MapT& map) const { blah }
};
processTypedMap(myMap, Foo());
Returns
false if the grid type is unknown or unhandled.

Definition at line 233 of file Transform.h.

template<typename Type >
Type openvdb::OPENVDB_VERSION_NAME::math::Remainder ( Type  x,
Type  y 
)
inline

Return the remainder of x / y.

Definition at line 781 of file Math.h.

template<class MatType >
MatType openvdb::OPENVDB_VERSION_NAME::math::rotation ( const Quat< typename MatType::value_type > &  q,
typename MatType::value_type  eps = static_cast<typename MatType::value_type>(1.0e-8) 
)

Return the rotation matrix specified by the given quaternion.

The quaternion is normalized and used to construct the matrix. Note that the matrix is transposed to match post-multiplication semantics.

Definition at line 172 of file Mat.h.

template<class MatType >
MatType openvdb::OPENVDB_VERSION_NAME::math::rotation ( Axis  axis,
typename MatType::value_type  angle 
)

Return a matrix for rotation by angle radians about the given axis.

Parameters
axisThe axis (one of X, Y, Z) to rotate about.
angleThe rotation angle, in radians.

Definition at line 213 of file Mat.h.

template<class MatType >
MatType openvdb::OPENVDB_VERSION_NAME::math::rotation ( const Vec3< typename MatType::value_type > &  _axis,
typename MatType::value_type  angle 
)

Return a matrix for rotation by angle radians about the given axis.

Note
The axis must be a unit vector.

Definition at line 251 of file Mat.h.

template<typename MatType , typename ValueType1 , typename ValueType2 >
MatType openvdb::OPENVDB_VERSION_NAME::math::rotation ( const Vec3< ValueType1 > &  _v1,
const Vec3< ValueType2 > &  _v2,
typename MatType::value_type  eps = static_cast<typename MatType::value_type>(1.0e-8) 
)
inline

Return a rotation matrix that maps v1 onto v2 about the cross product of v1 and v2.

Definition at line 502 of file Mat.h.

float openvdb::OPENVDB_VERSION_NAME::math::Round ( float  x)
inline

Return x rounded to the nearest integer.

Definition at line 819 of file Math.h.

double openvdb::OPENVDB_VERSION_NAME::math::Round ( double  x)
inline

Return x rounded to the nearest integer.

Definition at line 820 of file Math.h.

long double openvdb::OPENVDB_VERSION_NAME::math::Round ( long double  x)
inline

Return x rounded to the nearest integer.

Definition at line 821 of file Math.h.

float openvdb::OPENVDB_VERSION_NAME::math::RoundDown ( float  x)
inline

Return x rounded down to the nearest integer.

Definition at line 803 of file Math.h.

double openvdb::OPENVDB_VERSION_NAME::math::RoundDown ( double  x)
inline

Return x rounded down to the nearest integer.

Definition at line 804 of file Math.h.

long double openvdb::OPENVDB_VERSION_NAME::math::RoundDown ( long double  x)
inline

Return x rounded down to the nearest integer.

Definition at line 805 of file Math.h.

template<typename Type >
Type openvdb::OPENVDB_VERSION_NAME::math::RoundDown ( Type  x,
Type  base 
)
inline

Return x rounded down to the nearest multiple of base.

Definition at line 810 of file Math.h.

float openvdb::OPENVDB_VERSION_NAME::math::RoundUp ( float  x)
inline

Return x rounded up to the nearest integer.

Definition at line 787 of file Math.h.

double openvdb::OPENVDB_VERSION_NAME::math::RoundUp ( double  x)
inline

Return x rounded up to the nearest integer.

Definition at line 788 of file Math.h.

long double openvdb::OPENVDB_VERSION_NAME::math::RoundUp ( long double  x)
inline

Return x rounded up to the nearest integer.

Definition at line 789 of file Math.h.

template<typename Type >
Type openvdb::OPENVDB_VERSION_NAME::math::RoundUp ( Type  x,
Type  base 
)
inline

Return x rounded up to the nearest multiple of base.

Definition at line 794 of file Math.h.

template<class MatType >
MatType openvdb::OPENVDB_VERSION_NAME::math::scale ( const Vec3< typename MatType::value_type > &  s)

Return a matrix that scales by s.

Definition at line 615 of file Mat.h.

template<class MatType >
MatType openvdb::OPENVDB_VERSION_NAME::math::shear ( Axis  axis0,
Axis  axis1,
typename MatType::value_type  shear 
)

Set the matrix to a shear along axis0 by a fraction of axis1.

Parameters
axis0The fixed axis of the shear.
axis1The shear axis.
shearThe shear factor.

Definition at line 688 of file Mat.h.

template<typename Type >
int openvdb::OPENVDB_VERSION_NAME::math::Sign ( const Type &  x)
inline

Return the sign of the given value as an integer (either -1, 0 or 1).

Definition at line 736 of file Math.h.

template<typename Type >
bool openvdb::OPENVDB_VERSION_NAME::math::SignChange ( const Type &  a,
const Type &  b 
)
inline

Return true if a and b have different signs.

Note
Zero is considered a positive number.

Definition at line 743 of file Math.h.

OPENVDB_API SharedPtr<MapBase> openvdb::OPENVDB_VERSION_NAME::math::simplify ( SharedPtr< AffineMap >  affine)

reduces an AffineMap to a ScaleMap or a ScaleTranslateMap when it can

float openvdb::OPENVDB_VERSION_NAME::math::Sin ( const float x)
inline

Return sin x.

Definition at line 716 of file Math.h.

double openvdb::OPENVDB_VERSION_NAME::math::Sin ( const double &  x)
inline

Return sin x.

Definition at line 718 of file Math.h.

template<class MatType >
MatType openvdb::OPENVDB_VERSION_NAME::math::skew ( const Vec3< typename MatType::value_type > &  skew)

Return a matrix as the cross product of the given vector.

Definition at line 708 of file Mat.h.

template<typename T >
Quat<T> openvdb::OPENVDB_VERSION_NAME::math::slerp ( const Quat< T > &  q1,
const Quat< T > &  q2,
t,
tolerance = 0.00001 
)

Linear interpolation between the two quaternions.

Definition at line 27 of file Quat.h.

template<typename T , typename T0 >
Mat3<T> openvdb::OPENVDB_VERSION_NAME::math::slerp ( const Mat3< T0 > &  m1,
const Mat3< T0 > &  m2,
t 
)

Interpolate between m1 and m2. Converts to quaternion form and uses slerp m1 and m2 must be rotation matrices!

Definition at line 559 of file Quat.h.

template<typename Type >
Type openvdb::OPENVDB_VERSION_NAME::math::SmoothUnitStep ( Type  x)
inline

Return 0 if x < 0, 1 if x > 1 or else (3 − 2 x) x .

Definition at line 287 of file Math.h.

template<typename Type >
Type openvdb::OPENVDB_VERSION_NAME::math::SmoothUnitStep ( Type  x,
Type  min,
Type  max 
)
inline

Return 0 if x < min, 1 if x > max or else (3 − 2 t) t , where t = (xmin)/(maxmin).

Definition at line 296 of file Math.h.

template<class MatType >
MatType openvdb::OPENVDB_VERSION_NAME::math::snapMatBasis ( const MatType &  source,
Axis  axis,
const Vec3< typename MatType::value_type > &  direction 
)
inline

This function snaps a specific axis to a specific direction, preserving scaling.

It does this using minimum energy, thus posing a unique solution if basis & direction aren't parallel.

Note
direction need not be unit.

Definition at line 751 of file Mat.h.

float openvdb::OPENVDB_VERSION_NAME::math::Sqrt ( float  x)
inline

Return the square root of a floating-point value.

Definition at line 761 of file Math.h.

double openvdb::OPENVDB_VERSION_NAME::math::Sqrt ( double  x)
inline

Return the square root of a floating-point value.

Definition at line 762 of file Math.h.

long double openvdb::OPENVDB_VERSION_NAME::math::Sqrt ( long double  x)
inline

Return the square root of a floating-point value.

Definition at line 763 of file Math.h.

template<typename MatType >
void openvdb::OPENVDB_VERSION_NAME::math::sqrtSolve ( const MatType &  aA,
MatType &  aB,
double  aTol = 0.01 
)
inline

Solve for A=B*B, given A.

Denman-Beavers square root iteration

Definition at line 797 of file Mat.h.

BiasedGradientScheme openvdb::OPENVDB_VERSION_NAME::math::stringToBiasedGradientScheme ( const std::string s)
inline

Definition at line 191 of file FiniteDifference.h.

DScheme openvdb::OPENVDB_VERSION_NAME::math::stringToDScheme ( const std::string s)
inline

Definition at line 77 of file FiniteDifference.h.

TemporalIntegrationScheme openvdb::OPENVDB_VERSION_NAME::math::stringToTemporalIntegrationScheme ( const std::string s)
inline

Definition at line 256 of file FiniteDifference.h.

std::string openvdb::OPENVDB_VERSION_NAME::math::temporalIntegrationSchemeToMenuName ( TemporalIntegrationScheme  tis)
inline

Definition at line 276 of file FiniteDifference.h.

std::string openvdb::OPENVDB_VERSION_NAME::math::temporalIntegrationSchemeToString ( TemporalIntegrationScheme  tis)
inline

Definition at line 243 of file FiniteDifference.h.

template<typename T0 , typename T1 >
Vec3<T1> openvdb::OPENVDB_VERSION_NAME::math::transformNormal ( const Mat4< T0 > &  m,
const Vec3< T1 > &  n 
)

Transform a Vec3 by pre-multiplication, without translation. Presumes this matrix is inverse of coordinate transform Synonymous to "pretransform3x3"

Definition at line 1226 of file Mat4.h.

template<typename Type >
Type openvdb::OPENVDB_VERSION_NAME::math::Truncate ( Type  x,
unsigned int  digits 
)
inline

Return x truncated to the given number of decimal digits.

Definition at line 870 of file Math.h.

template<class MatType >
MatType openvdb::OPENVDB_VERSION_NAME::math::unit ( const MatType &  mat,
typename MatType::value_type  eps = 1.0e-8 
)

Return a copy of the given matrix with its upper 3×3 rows normalized.

This can be geometrically interpreted as a matrix with no scaling along its major axes.

Definition at line 648 of file Mat.h.

template<class MatType >
MatType openvdb::OPENVDB_VERSION_NAME::math::unit ( const MatType &  in,
typename MatType::value_type  eps,
Vec3< typename MatType::value_type > &  scaling 
)

Return a copy of the given matrix with its upper 3×3 rows normalized, and return the length of each of these rows in scaling.

This can be geometrically interpretted as a matrix with no scaling along its major axes, and the scaling in the input vector

Definition at line 661 of file Mat.h.

template<typename ValueType >
ValueType openvdb::OPENVDB_VERSION_NAME::math::WENO5 ( const ValueType &  v1,
const ValueType &  v2,
const ValueType &  v3,
const ValueType &  v4,
const ValueType &  v5,
float  scale2 = 0.01f 
)
inline

Implementation of nominally fifth-order finite-difference WENO.

This function returns the numerical flux. See "High Order Finite Difference and Finite Volume WENO Schemes and Discontinuous Galerkin Methods for CFD" - Chi-Wang Shu ICASE Report No 2001-11 (page 6). Also see ICASE No 97-65 for a more complete reference (Shu, 1997). Given v1 = f(x-2dx), v2 = f(x-dx), v3 = f(x), v4 = f(x+dx) and v5 = f(x+2dx), return an interpolated value f(x+dx/2) with the special property that ( f(x+dx/2) - f(x-dx/2) ) / dx = df/dx (x) + error, where the error is fifth-order in smooth regions: O(dx) <= error <=O(dx^5)

Definition at line 303 of file FiniteDifference.h.

template<typename Type >
bool openvdb::OPENVDB_VERSION_NAME::math::ZeroCrossing ( const Type &  a,
const Type &  b 
)
inline

Return true if the interval [a, b] includes zero, i.e., if either a or b is zero or if they have different signs.

Definition at line 753 of file Math.h.