OpenVDB 13.1.0
Loading...
Searching...
No Matches
Math.h File Reference

Math functions and classes. More...

Go to the source code of this file.

Classes

struct  Tolerance< float >
struct  Tolerance< double >
struct  Delta< float >
struct  Delta< double >
struct  Maximum< T >
 Maximum floating-point values. More...
class  Coord
 Signed (i, j, k) 32-bit integer coordinate class, similar to openvdb::math::Coord. More...
class  Coord2
 Signed (i, j) 32-bit integer coordinate class, similar to openvdb::math::Coord. More...
class  Vec2< T >
 A simple vector class with three components, similar to openvdb::math::Vec3. More...
class  MatBase< T, ROWS, COLS >
class  Mat2< T >
class  Mat2x3< T >
class  Mat3x2< T >
class  Mat3< T >
class  Mat4< T >
class  Vec3< T >
 A simple vector class with three components, similar to openvdb::math::Vec3. More...
class  Vec4< T >
 A simple vector class with four components, similar to openvdb::math::Vec4. More...
struct  BaseBBox< Vec3T >
struct  BBox< Vec3T, true >
 Partial template specialization for floating point coordinate types. More...
struct  BBox< CoordT, false >
 Partial template specialization for integer coordinate types. More...
class  BBox< CoordT, false >::Iterator
 Iterator over the domain covered by a BBox. More...
class  Rgba8
 8-bit red, green, blue, alpha packed into 32 bit unsigned int More...
class  Rgba8
 8-bit red, green, blue, alpha packed into 32 bit unsigned int More...
class  Coord
 Signed (i, j, k) 32-bit integer coordinate class, similar to openvdb::math::Coord. More...
struct  BBox< Vec3T, bool >

Namespaces

namespace  nanovdb
 Defines a simple memory pool used to call cub functions that use dynamic temporary storage.
namespace  nanovdb::math

Typedefs

using Coord3 = Coord
 Type alias for Coord so we have a consistent naming convention.
using Vec3d = Vec3<double>
using Vec3f = Vec3<float>
using Vec3i = Vec3<int32_t>
using Vec3u = Vec3<uint32_t>
using Vec3u8 = Vec3<uint8_t>
using Vec3u16 = Vec3<uint16_t>
using Vec4R = Vec4<double>
using Vec4d = Vec4<double>
using Vec4f = Vec4<float>
using Vec4i = Vec4<int>
using Vec3d = math::Vec3<double>
using Vec3f = math::Vec3<float>
using Vec3i = math::Vec3<int32_t>
using Vec3u = math::Vec3<uint32_t>
using Vec3u8 = math::Vec3<uint8_t>
using Vec3u16 = math::Vec3<uint16_t>
using Vec4R = math::Vec4<double>
using Vec4d = math::Vec4<double>
using Vec4f = math::Vec4<float>
using Vec4i = math::Vec4<int>
using CoordBBox = math::BBox<Coord>
using Vec3dBBox = math::BBox<Vec3d>
using Vec3d

Functions

template<typename T>
__hostdev__ constexpr T pi ()
 Pi constant taken from Boost to match old behaviour.
template<>
__hostdev__ constexpr float pi ()
template<>
__hostdev__ constexpr double pi ()
template<>
__hostdev__ constexpr long double pi ()
template<typename Type>
__hostdev__ bool isApproxZero (const Type &x)
template<typename Type>
__hostdev__ Type Min (Type a, Type b)
__hostdev__ int32_t Min (int32_t a, int32_t b)
__hostdev__ uint32_t Min (uint32_t a, uint32_t b)
__hostdev__ float Min (float a, float b)
__hostdev__ double Min (double a, double b)
template<typename Type>
__hostdev__ Type Max (Type a, Type b)
__hostdev__ int32_t Max (int32_t a, int32_t b)
__hostdev__ uint32_t Max (uint32_t a, uint32_t b)
__hostdev__ float Max (float a, float b)
__hostdev__ double Max (double a, double b)
__hostdev__ float Clamp (float x, float a, float b)
__hostdev__ double Clamp (double x, double a, double b)
__hostdev__ float Fract (float x)
__hostdev__ double Fract (double x)
__hostdev__ int32_t Floor (float x)
__hostdev__ int32_t Floor (double x)
__hostdev__ int32_t Ceil (float x)
__hostdev__ int32_t Ceil (double x)
template<typename T>
__hostdev__Pow2 (T x)
template<typename T>
__hostdev__Pow3 (T x)
template<typename T>
__hostdev__Pow4 (T x)
template<typename T>
__hostdev__Abs (T x)
template<>
__hostdev__ float Abs (float x)
template<>
__hostdev__ double Abs (double x)
template<>
__hostdev__ int Abs (int x)
template<typename CoordT, typename RealT, template< typename > class Vec3T>
__hostdev__ CoordT Round (const Vec3T< RealT > &xyz)
template<typename CoordT, template< typename > class Vec3T>
__hostdev__ CoordT Round (const Vec3T< float > &xyz)
template<typename CoordT, template< typename > class Vec3T>
__hostdev__ CoordT Round (const Vec3T< double > &xyz)
template<typename CoordT, typename RealT, template< typename > class Vec3T>
__hostdev__ CoordT RoundDown (const Vec3T< RealT > &xyz)
__hostdev__ float Sqrt (float x)
 Return the square root of a floating-point value.
__hostdev__ double Sqrt (double x)
template<typename T>
__hostdev__Sign (const T &x)
 Return the sign of the given value as an integer (either -1, 0 or 1).
template<typename Vec3T>
__hostdev__ int MinIndex (const Vec3T &v)
template<typename Vec3T>
__hostdev__ int MaxIndex (const Vec3T &v)
template<uint64_t wordSize>
__hostdev__ uint64_t AlignUp (uint64_t byteCount)
 round up byteSize to the nearest wordSize, e.g. to align to machine word: AlignUp<sizeof(size_t)(n)
template<typename T1, typename T2>
__hostdev__ Vec2< T2 > operator* (T1 scalar, const Vec2< T2 > &vec)
template<typename T1, typename T2>
__hostdev__ Vec2< T2 > operator/ (T1 scalar, const Vec2< T2 > &vec)
template<typename T>
__hostdev__ Mat2< T > operator* (const T &s, const Mat2< T > &m)
 Multiply a scalar by a 2x2 matrix, result is a 2x2 matrix.
template<typename T>
__hostdev__ Mat2< T > operator* (const Mat2x3< T > &lhs, const Mat3x2< T > &rhs)
 Multiply a 2x3 matrix by a 3x2 matrix, result is a 2x2 matrix.
template<typename T>
__hostdev__ Mat2x3< T > operator* (const Mat3< T > &lhs, const Mat2x3< T > &rhs)
 Multiply a 3x3 matrix by a 2x3 matrix, result is a 2x3 matrix.
template<typename T>
__hostdev__ Mat2x3< T > operator* (const Mat2x3< T > &lhs, const Mat3< T > &rhs)
 Multiply a 2x3 matrix by a 3x3 matrix, result is a 2x3 matrix.
template<typename T>
__hostdev__ Mat3x2< T > operator* (const Mat3x2< T > &lhs, const Mat2< T > &rhs)
 Multiply a 3x2 matrix by a 2x2 matrix, result is a 3x2 matrix.
template<typename T>
__hostdev__ Mat2x3< T > operator* (const Mat2< T > &lhs, const Mat2x3< T > &rhs)
 Multiply a 2x2 matrix by a 2x3 matrix, result is a 2x3 matrix.
template<typename T>
__hostdev__ Mat3< T > operator* (const Mat3x2< T > &lhs, const Mat2x3< T > &rhs)
 Multiply a 3x2 matrix by a 2x3 matrix, result is a 3x3 matrix.
template<typename T1, typename T2>
__hostdev__ Vec3< T2 > operator* (T1 scalar, const Vec3< T2 > &vec)
template<typename T1, typename T2>
__hostdev__ Vec3< T2 > operator/ (T1 scalar, const Vec3< T2 > &vec)
template<typename T1, typename T2>
__hostdev__ Vec4< T2 > operator* (T1 scalar, const Vec4< T2 > &vec)
template<typename T1, typename T2>
__hostdev__ Vec4< T2 > operator/ (T1 scalar, const Vec4< T2 > &vec)
template<typename T>
__hostdev__ Vec4< T > operator* (const Mat4< T > &m, const Vec4< T > &v)
 Return the matrix vector product of a 4x4 matrix and a 4d vector.
template<typename Vec3T>
__hostdev__ Vec3T matMult (const float *mat, const Vec3T &xyz)
 Multiply a 3x3 matrix and a 3d vector using 32bit floating point arithmetics.
template<typename Vec3T>
__hostdev__ Vec3T matMult (const double *mat, const Vec3T &xyz)
 Multiply a 3x3 matrix and a 3d vector using 64bit floating point arithmetics.
template<typename Vec3T>
__hostdev__ Vec3T matMult (const float *mat, const float *vec, const Vec3T &xyz)
 Multiply a 3x3 matrix to a 3d vector and add another 3d vector using 32bit floating point arithmetics.
template<typename Vec3T>
__hostdev__ Vec3T matMult (const double *mat, const double *vec, const Vec3T &xyz)
 Multiply a 3x3 matrix to a 3d vector and add another 3d vector using 64bit floating point arithmetics.
template<typename Vec3T>
__hostdev__ Vec3T matMultT (const float *mat, const Vec3T &xyz)
 Multiply the transposed of a 3x3 matrix and a 3d vector using 32bit floating point arithmetics.
template<typename Vec3T>
__hostdev__ Vec3T matMultT (const double *mat, const Vec3T &xyz)
 Multiply the transposed of a 3x3 matrix and a 3d vector using 64bit floating point arithmetics.
template<typename Vec3T>
__hostdev__ Vec3T matMultT (const float *mat, const float *vec, const Vec3T &xyz)
template<typename Vec3T>
__hostdev__ Vec3T matMultT (const double *mat, const double *vec, const Vec3T &xyz)

Detailed Description

Math functions and classes.

Author
Ken Museth
Date
January 8, 2020