OpenVDB 13.1.0
Loading...
Searching...
No Matches
Vec3< T > Class Template Reference

A simple vector class with three components, similar to openvdb::math::Vec3. More...

#include <nanovdb/math/Math.h>

Public Types

using ValueType = T

Public Member Functions

 Vec3 ()=default
__hostdev__ Vec3 (T x)
__hostdev__ Vec3 (T x, T y, T z)
template<template< class > class Vec3T, class T2>
__hostdev__ Vec3 (const Vec3T< T2 > &v)
template<typename T2>
__hostdev__ Vec3 (const Vec3< T2 > &v)
__hostdev__ Vec3 (const Coord &ijk)
__hostdev__ bool operator== (const Vec3 &rhs) const
__hostdev__ bool operator!= (const Vec3 &rhs) const
template<template< class > class Vec3T, class T2>
__hostdev__ Vec3operator= (const Vec3T< T2 > &rhs)
__hostdev__ const T & operator[] (int i) const
__hostdev__ T & operator[] (int i)
template<typename Vec3T>
__hostdev__dot (const Vec3T &v) const
template<typename Vec3T>
__hostdev__ Vec3 cross (const Vec3T &v) const
template<typename Vec3T>
__hostdev__ Mat3< ValueTypeouter (const Vec3T &v) const
 Outer product of a 3x1 vector and a 1x3 vector, result is a 3x3 matrix.
__hostdev__lengthSqr () const
__hostdev__length () const
__hostdev__ Vec3 operator- () const
__hostdev__ Vec3 operator* (const Vec3 &v) const
__hostdev__ Vec3 operator/ (const Vec3 &v) const
__hostdev__ Vec3 operator+ (const Vec3 &v) const
__hostdev__ Vec3 operator- (const Vec3 &v) const
__hostdev__ Vec3 operator+ (const Coord &ijk) const
__hostdev__ Vec3 operator- (const Coord &ijk) const
__hostdev__ Vec3 operator* (const T &s) const
__hostdev__ Vec3 operator/ (const T &s) const
__hostdev__ Vec3operator+= (const Vec3 &v)
__hostdev__ Vec3operator+= (const Coord &ijk)
__hostdev__ Vec3operator-= (const Vec3 &v)
__hostdev__ Vec3operator-= (const Coord &ijk)
__hostdev__ Vec3operator*= (const T &s)
__hostdev__ Vec3operator/= (const T &s)
__hostdev__ Vec3normalize ()
__hostdev__ Vec3minComponent (const Vec3 &other)
 Perform a component-wise minimum with the other Coord.
__hostdev__ Vec3maxComponent (const Vec3 &other)
 Perform a component-wise maximum with the other Coord.
__hostdev__ ValueType min () const
 Return the smallest vector component.
__hostdev__ ValueType max () const
 Return the largest vector component.
__hostdev__ Coord floor () const
 Round each component if this Vec<T> up to its integer value.
__hostdev__ Coord ceil () const
 Round each component if this Vec<T> down to its integer value.
__hostdev__ Coord round () const
 Round each component if this Vec<T> to its closest integer value.
__hostdev__ T * asPointer ()
 return a non-const raw constant pointer to array of three vector components
__hostdev__ const T * asPointer () const
 return a const raw constant pointer to array of three vector components

Static Public Attributes

static const int SIZE = 3
static const int size = 3

Detailed Description

template<typename T>
class nanovdb::math::Vec3< T >

A simple vector class with three components, similar to openvdb::math::Vec3.

Member Typedef Documentation

◆ ValueType

template<typename T>
using ValueType = T

Constructor & Destructor Documentation

◆ Vec3() [1/6]

template<typename T>
Vec3 ( )
default

◆ Vec3() [2/6]

template<typename T>
__hostdev__ Vec3 ( T x)
inlineexplicit

◆ Vec3() [3/6]

template<typename T>
__hostdev__ Vec3 ( T x,
T y,
T z )
inline

◆ Vec3() [4/6]

template<typename T>
template<template< class > class Vec3T, class T2>
__hostdev__ Vec3 ( const Vec3T< T2 > & v)
inline

◆ Vec3() [5/6]

template<typename T>
template<typename T2>
__hostdev__ Vec3 ( const Vec3< T2 > & v)
inlineexplicit

◆ Vec3() [6/6]

template<typename T>
__hostdev__ Vec3 ( const Coord & ijk)
inlineexplicit

Member Function Documentation

◆ asPointer() [1/2]

template<typename T>
__hostdev__ T * asPointer ( )
inline

return a non-const raw constant pointer to array of three vector components

◆ asPointer() [2/2]

template<typename T>
__hostdev__ const T * asPointer ( ) const
inline

return a const raw constant pointer to array of three vector components

◆ ceil()

template<typename T>
__hostdev__ Coord ceil ( ) const
inline

Round each component if this Vec<T> down to its integer value.

Returns
Return an integer Coord

◆ cross()

template<typename T>
template<typename Vec3T>
__hostdev__ Vec3 cross ( const Vec3T & v) const
inline

◆ dot()

template<typename T>
template<typename Vec3T>
__hostdev__ T dot ( const Vec3T & v) const
inline

◆ floor()

template<typename T>
__hostdev__ Coord floor ( ) const
inline

Round each component if this Vec<T> up to its integer value.

Returns
Return an integer Coord

◆ length()

template<typename T>
__hostdev__ T length ( ) const
inline

◆ lengthSqr()

template<typename T>
__hostdev__ T lengthSqr ( ) const
inline

◆ max()

template<typename T>
__hostdev__ ValueType max ( ) const
inline

Return the largest vector component.

◆ maxComponent()

template<typename T>
__hostdev__ Vec3 & maxComponent ( const Vec3< T > & other)
inline

Perform a component-wise maximum with the other Coord.

◆ min()

template<typename T>
__hostdev__ ValueType min ( ) const
inline

Return the smallest vector component.

◆ minComponent()

template<typename T>
__hostdev__ Vec3 & minComponent ( const Vec3< T > & other)
inline

Perform a component-wise minimum with the other Coord.

◆ normalize()

template<typename T>
__hostdev__ Vec3 & normalize ( )
inline

◆ operator!=()

template<typename T>
__hostdev__ bool operator!= ( const Vec3< T > & rhs) const
inline

◆ operator*() [1/2]

template<typename T>
__hostdev__ Vec3 operator* ( const T & s) const
inline

◆ operator*() [2/2]

template<typename T>
__hostdev__ Vec3 operator* ( const Vec3< T > & v) const
inline

◆ operator*=()

template<typename T>
__hostdev__ Vec3 & operator*= ( const T & s)
inline

◆ operator+() [1/2]

template<typename T>
__hostdev__ Vec3 operator+ ( const Coord & ijk) const
inline

◆ operator+() [2/2]

template<typename T>
__hostdev__ Vec3 operator+ ( const Vec3< T > & v) const
inline

◆ operator+=() [1/2]

template<typename T>
__hostdev__ Vec3 & operator+= ( const Coord & ijk)
inline

◆ operator+=() [2/2]

template<typename T>
__hostdev__ Vec3 & operator+= ( const Vec3< T > & v)
inline

◆ operator-() [1/3]

template<typename T>
__hostdev__ Vec3 operator- ( ) const
inline

◆ operator-() [2/3]

template<typename T>
__hostdev__ Vec3 operator- ( const Coord & ijk) const
inline

◆ operator-() [3/3]

template<typename T>
__hostdev__ Vec3 operator- ( const Vec3< T > & v) const
inline

◆ operator-=() [1/2]

template<typename T>
__hostdev__ Vec3 & operator-= ( const Coord & ijk)
inline

◆ operator-=() [2/2]

template<typename T>
__hostdev__ Vec3 & operator-= ( const Vec3< T > & v)
inline

◆ operator/() [1/2]

template<typename T>
__hostdev__ Vec3 operator/ ( const T & s) const
inline

◆ operator/() [2/2]

template<typename T>
__hostdev__ Vec3 operator/ ( const Vec3< T > & v) const
inline

◆ operator/=()

template<typename T>
__hostdev__ Vec3 & operator/= ( const T & s)
inline

◆ operator=()

template<typename T>
template<template< class > class Vec3T, class T2>
__hostdev__ Vec3 & operator= ( const Vec3T< T2 > & rhs)
inline

◆ operator==()

template<typename T>
__hostdev__ bool operator== ( const Vec3< T > & rhs) const
inline

◆ operator[]() [1/2]

template<typename T>
__hostdev__ T & operator[] ( int i)
inline

◆ operator[]() [2/2]

template<typename T>
__hostdev__ const T & operator[] ( int i) const
inline

◆ outer()

template<typename T>
template<typename Vec3T>
__hostdev__ Mat3< ValueType > outer ( const Vec3T & v) const
inline

Outer product of a 3x1 vector and a 1x3 vector, result is a 3x3 matrix.

◆ round()

template<typename T>
__hostdev__ Coord round ( ) const
inline

Round each component if this Vec<T> to its closest integer value.

Returns
Return an integer Coord

Member Data Documentation

◆ SIZE

template<typename T>
const int SIZE = 3
static

◆ size

template<typename T>
const int size = 3
static