HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
openvdb::OPENVDB_VERSION_NAME::math::Vec3< T > Class Template Reference

#include <Mat.h>

+ Inheritance diagram for openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >:

Public Types

using value_type = T
 
using ValueType = T
 
- Public Types inherited from openvdb::OPENVDB_VERSION_NAME::math::Tuple< 3, T >
using value_type = T
 
using ValueType = T
 

Public Member Functions

 Vec3 ()
 Trivial constructor, the vector is NOT initialized. More...
 
 Vec3 (T val)
 Construct a vector all of whose components have the given value. More...
 
 Vec3 (T x, T y, T z)
 Constructor with three arguments, e.g. Vec3d v(1,2,3);. More...
 
template<typename Source >
 Vec3 (Source *a)
 Constructor with array argument, e.g. double a[3]; Vec3d v(a);. More...
 
template<typename Source >
 Vec3 (const Tuple< 3, Source > &v)
 Construct a Vec3 from a 3-Tuple with a possibly different value type. More...
 
template<typename Other >
 Vec3 (Other val, typename std::enable_if< std::is_arithmetic< Other >::value, Conversion >::type=Conversion{})
 Construct a vector all of whose components have the given value, which may be of an arithmetic type different from this vector's value type. More...
 
template<typename Other >
 Vec3 (const Vec3< Other > &v)
 Construct a Vec3 from another Vec3 with a possibly different value type. More...
 
T & x ()
 Reference to the component, e.g. v.x() = 4.5f;. More...
 
T & y ()
 
T & z ()
 
x () const
 Get the component, e.g. float f = v.y();. More...
 
y () const
 
z () const
 
T * asPointer ()
 
const T * asPointer () const
 
T & operator() (int i)
 Alternative indexed reference to the elements. More...
 
operator() (int i) const
 Alternative indexed constant reference to the elements,. More...
 
const Vec3< T > & init (T x=0, T y=0, T z=0)
 
const Vec3< T > & setZero ()
 Set "this" vector to zero. More...
 
template<typename Source >
const Vec3< T > & operator= (const Vec3< Source > &v)
 Assignment operator. More...
 
bool eq (const Vec3< T > &v, T eps=static_cast< T >(1.0e-7)) const
 Test if "this" vector is equivalent to vector v with tolerance of eps. More...
 
Vec3< T > operator- () const
 Negation operator, for e.g. v1 = -v2;. More...
 
template<typename T0 , typename T1 >
const Vec3< T > & add (const Vec3< T0 > &v1, const Vec3< T1 > &v2)
 
template<typename T0 , typename T1 >
const Vec3< T > & sub (const Vec3< T0 > &v1, const Vec3< T1 > &v2)
 
template<typename T0 , typename T1 >
const Vec3< T > & scale (T0 scale, const Vec3< T1 > &v)
 
template<typename T0 , typename T1 >
const Vec3< T > & div (T0 scale, const Vec3< T1 > &v)
 
dot (const Vec3< T > &v) const
 Dot product. More...
 
length () const
 Length of the vector. More...
 
lengthSqr () const
 
Vec3< T > cross (const Vec3< T > &v) const
 Return the cross product of "this" vector and v;. More...
 
const Vec3< T > & cross (const Vec3< T > &v1, const Vec3< T > &v2)
 this = v1 cross v2, v1 and v2 must be distinct objects than "this" More...
 
template<typename S >
const Vec3< T > & operator*= (S scalar)
 Multiply each element of this vector by scalar. More...
 
template<typename S >
const Vec3< T > & operator*= (const Vec3< S > &v1)
 Multiply each element of this vector by the corresponding element of the given vector. More...
 
template<typename S >
const Vec3< T > & operator/= (S scalar)
 Divide each element of this vector by scalar. More...
 
template<typename S >
const Vec3< T > & operator/= (const Vec3< S > &v1)
 Divide each element of this vector by the corresponding element of the given vector. More...
 
template<typename S >
const Vec3< T > & operator+= (S scalar)
 Add scalar to each element of this vector. More...
 
template<typename S >
const Vec3< T > & operator+= (const Vec3< S > &v1)
 Add each element of the given vector to the corresponding element of this vector. More...
 
template<typename S >
const Vec3< T > & operator-= (S scalar)
 Subtract scalar from each element of this vector. More...
 
template<typename S >
const Vec3< T > & operator-= (const Vec3< S > &v1)
 Subtract each element of the given vector from the corresponding element of this vector. More...
 
const Vec3< T > & exp ()
 
const Vec3< T > & log ()
 
sum () const
 Return the sum of all the vector components. More...
 
product () const
 Return the product of all the vector components. More...
 
bool normalize (T eps=T(1.0e-7))
 this = normalized this More...
 
Vec3< T > unit (T eps=0) const
 return normalized this, throws if null vector More...
 
Vec3< T > unit (T eps, T &len) const
 return normalized this and length, throws if null vector More...
 
Vec3< T > unitSafe () const
 return normalized this, or (1, 0, 0) if this is null vector More...
 
component (const Vec3< T > &onto, T eps=static_cast< T >(1.0e-7)) const
 
Vec3< T > projection (const Vec3< T > &onto, T eps=static_cast< T >(1.0e-7)) const
 
Vec3< T > getArbPerpendicular () const
 
Vec3< T > sorted () const
 Return a vector with the components of this in ascending order. More...
 
Vec3< T > reversed () const
 Return the vector (z, y, x) More...
 
- Public Member Functions inherited from openvdb::OPENVDB_VERSION_NAME::math::Tuple< 3, T >
 Tuple ()
 Default ctor. Does nothing. More...
 
 Tuple (Tuple const &src)
 Copy constructor. Used when the class signature matches exactly. More...
 
 Tuple (Tuple< src_size, src_valtype > const &src)
 Conversion constructor. More...
 
Tupleoperator= (Tuple const &src)
 Assignment operator. More...
 
T operator[] (int i) const
 
Toperator[] (int i)
 
std::string str () const
 
void write (std::ostream &os) const
 
void read (std::istream &is)
 
bool isNan () const
 True if a Nan is present in this tuple. More...
 
bool isInfinite () const
 True if an Inf is present in this tuple. More...
 
bool isFinite () const
 True if no Nan or Inf values are present. More...
 
bool isZero () const
 True if all elements are exactly zero. More...
 
void toV (S *v) const
 Copies this tuple into an array of a compatible type. More...
 
value_typeasV ()
 Exposes the internal array. Be careful when using this function. More...
 
value_type constasV () const
 Exposes the internal array. Be careful when using this function. More...
 

Static Public Member Functions

static unsigned numRows ()
 
static unsigned numColumns ()
 
static unsigned numElements ()
 
static Vec3< T > zero ()
 Predefined constants, e.g. Vec3d v = Vec3d::xNegAxis();. More...
 
static Vec3< T > ones ()
 

Additional Inherited Members

- Static Public Attributes inherited from openvdb::OPENVDB_VERSION_NAME::math::Tuple< 3, T >
static const int size
 
- Protected Attributes inherited from openvdb::OPENVDB_VERSION_NAME::math::Tuple< 3, T >
T mm [SIZE]
 

Detailed Description

template<typename T>
class openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >

Definition at line 197 of file Mat.h.

Member Typedef Documentation

template<typename T>
using openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::value_type = T

Definition at line 53 of file Vec3.h.

template<typename T>
using openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::ValueType = T

Definition at line 54 of file Vec3.h.

Constructor & Destructor Documentation

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

Trivial constructor, the vector is NOT initialized.

Definition at line 57 of file Vec3.h.

template<typename T>
openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::Vec3 ( val)
inlineexplicit

Construct a vector all of whose components have the given value.

Definition at line 60 of file Vec3.h.

template<typename T>
openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::Vec3 ( x,
y,
z 
)
inline

Constructor with three arguments, e.g. Vec3d v(1,2,3);.

Definition at line 63 of file Vec3.h.

template<typename T>
template<typename Source >
openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::Vec3 ( Source *  a)
inline

Constructor with array argument, e.g. double a[3]; Vec3d v(a);.

Definition at line 72 of file Vec3.h.

template<typename T>
template<typename Source >
openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::Vec3 ( const Tuple< 3, Source > &  v)
inlineexplicit

Construct a Vec3 from a 3-Tuple with a possibly different value type.

Type conversion warnings are suppressed.

Definition at line 82 of file Vec3.h.

template<typename T>
template<typename Other >
openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::Vec3 ( Other  val,
typename std::enable_if< std::is_arithmetic< Other >::value, Conversion >::type  = Conversion{} 
)
inlineexplicit

Construct a vector all of whose components have the given value, which may be of an arithmetic type different from this vector's value type.

Type conversion warnings are suppressed.

Definition at line 93 of file Vec3.h.

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

Construct a Vec3 from another Vec3 with a possibly different value type.

Type conversion warnings are suppressed.

Definition at line 102 of file Vec3.h.

Member Function Documentation

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

this = v1 + v2 "this", v1 and v2 need not be distinct objects, e.g. v.add(v1,v);

Definition at line 172 of file Vec3.h.

template<typename T>
T* openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::asPointer ( )
inline

Definition at line 119 of file Vec3.h.

template<typename T>
const T* openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::asPointer ( ) const
inline

Definition at line 120 of file Vec3.h.

template<typename T>
T openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::component ( const Vec3< T > &  onto,
eps = static_cast<T>(1.0e-7) 
) const
inline

Returns the scalar component of v in the direction of onto, onto need not be unit. e.g double c = Vec3d::component(v1,v2);

Definition at line 419 of file Vec3.h.

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

Return the cross product of "this" vector and v;.

Definition at line 245 of file Vec3.h.

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

this = v1 cross v2, v1 and v2 must be distinct objects than "this"

Definition at line 254 of file Vec3.h.

template<typename T>
template<typename T0 , typename T1 >
const Vec3<T>& openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::div ( T0  scale,
const Vec3< T1 > &  v 
)
inline

Definition at line 206 of file Vec3.h.

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

Dot product.

Definition at line 216 of file Vec3.h.

template<typename T>
bool openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::eq ( const Vec3< T > &  v,
eps = static_cast<T>(1.0e-7) 
) const
inline

Test if "this" vector is equivalent to vector v with tolerance of eps.

Definition at line 158 of file Vec3.h.

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

Return a reference to itself after the exponent has been applied to all the vector components.

Definition at line 346 of file Vec3.h.

template<typename T>
Vec3<T> openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::getArbPerpendicular ( ) const
inline

Return an arbitrary unit vector perpendicular to v Vector this must be a unit vector e.g. v = v.normalize(); Vec3d n = v.getArbPerpendicular();

Definition at line 440 of file Vec3.h.

template<typename T>
const Vec3<T>& openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::init ( x = 0,
y = 0,
z = 0 
)
inline

"this" vector gets initialized to [x, y, z], calling v.init(); has same effect as calling v = Vec3::zero();

Definition at line 130 of file Vec3.h.

template<typename T>
T openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::length ( void  ) const
inline

Length of the vector.

Definition at line 225 of file Vec3.h.

template<typename T>
T openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::lengthSqr ( ) const
inline

Squared length of the vector, much faster than length() as it does not involve square root

Definition at line 236 of file Vec3.h.

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

Return a reference to itself after log has been applied to all the vector components.

Definition at line 356 of file Vec3.h.

template<typename T>
bool openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::normalize ( eps = T(1.0e-7))
inline

this = normalized this

Definition at line 377 of file Vec3.h.

template<typename T>
static unsigned openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::numColumns ( )
inlinestatic

Definition at line 414 of file Vec3.h.

template<typename T>
static unsigned openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::numElements ( )
inlinestatic

Definition at line 415 of file Vec3.h.

template<typename T>
static unsigned openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::numRows ( )
inlinestatic

Definition at line 413 of file Vec3.h.

template<typename T>
static Vec3<T> openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::ones ( )
inlinestatic

Definition at line 482 of file Vec3.h.

template<typename T>
T& openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::operator() ( int  i)
inline

Alternative indexed reference to the elements.

Definition at line 123 of file Vec3.h.

template<typename T>
T openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::operator() ( int  i) const
inline

Alternative indexed constant reference to the elements,.

Definition at line 126 of file Vec3.h.

template<typename T>
template<typename S >
const Vec3<T>& openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::operator*= ( scalar)
inline

Multiply each element of this vector by scalar.

Definition at line 266 of file Vec3.h.

template<typename T>
template<typename S >
const Vec3<T>& openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::operator*= ( const Vec3< S > &  v1)
inline

Multiply each element of this vector by the corresponding element of the given vector.

Definition at line 276 of file Vec3.h.

template<typename T>
template<typename S >
const Vec3<T>& openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::operator+= ( scalar)
inline

Add scalar to each element of this vector.

Definition at line 306 of file Vec3.h.

template<typename T>
template<typename S >
const Vec3<T>& openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::operator+= ( const Vec3< S > &  v1)
inline

Add each element of the given vector to the corresponding element of this vector.

Definition at line 316 of file Vec3.h.

template<typename T>
Vec3<T> openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::operator- ( ) const
inline

Negation operator, for e.g. v1 = -v2;.

Definition at line 167 of file Vec3.h.

template<typename T>
template<typename S >
const Vec3<T>& openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::operator-= ( scalar)
inline

Subtract scalar from each element of this vector.

Definition at line 326 of file Vec3.h.

template<typename T>
template<typename S >
const Vec3<T>& openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::operator-= ( const Vec3< S > &  v1)
inline

Subtract each element of the given vector from the corresponding element of this vector.

Definition at line 336 of file Vec3.h.

template<typename T>
template<typename S >
const Vec3<T>& openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::operator/= ( scalar)
inline

Divide each element of this vector by scalar.

Definition at line 286 of file Vec3.h.

template<typename T>
template<typename S >
const Vec3<T>& openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::operator/= ( const Vec3< S > &  v1)
inline

Divide each element of this vector by the corresponding element of the given vector.

Definition at line 296 of file Vec3.h.

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

Assignment operator.

Type conversion warnings are not suppressed.

Definition at line 147 of file Vec3.h.

template<typename T>
T openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::product ( ) const
inline

Return the product of all the vector components.

Definition at line 371 of file Vec3.h.

template<typename T>
Vec3<T> openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::projection ( const Vec3< T > &  onto,
eps = static_cast<T>(1.0e-7) 
) const
inline

Return the projection of v onto the vector, onto need not be unit e.g. Vec3d a = vprojection(n);

Definition at line 429 of file Vec3.h.

template<typename T>
Vec3<T> openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::reversed ( ) const
inline

Return the vector (z, y, x)

Definition at line 475 of file Vec3.h.

template<typename T>
template<typename T0 , typename T1 >
const Vec3<T>& openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::scale ( T0  scale,
const Vec3< T1 > &  v 
)
inline

this = scalar*v, v need not be a distinct object from "this", e.g. v.scale(1.5,v1);

Definition at line 196 of file Vec3.h.

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

Set "this" vector to zero.

Definition at line 138 of file Vec3.h.

template<typename T>
Vec3<T> openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::sorted ( ) const
inline

Return a vector with the components of this in ascending order.

Definition at line 465 of file Vec3.h.

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

this = v1 - v2 "this", v1 and v2 need not be distinct objects, e.g. v.sub(v1,v);

Definition at line 184 of file Vec3.h.

template<typename T>
T openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::sum ( ) const
inline

Return the sum of all the vector components.

Definition at line 365 of file Vec3.h.

template<typename T>
Vec3<T> openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::unit ( eps = 0) const
inline

return normalized this, throws if null vector

Definition at line 389 of file Vec3.h.

template<typename T>
Vec3<T> openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::unit ( eps,
T &  len 
) const
inline

return normalized this and length, throws if null vector

Definition at line 396 of file Vec3.h.

template<typename T>
Vec3<T> openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::unitSafe ( ) const
inline

return normalized this, or (1, 0, 0) if this is null vector

Definition at line 406 of file Vec3.h.

template<typename T>
T& openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::x ( )
inline

Reference to the component, e.g. v.x() = 4.5f;.

Definition at line 110 of file Vec3.h.

template<typename T>
T openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::x ( ) const
inline

Get the component, e.g. float f = v.y();.

Definition at line 115 of file Vec3.h.

template<typename T>
T& openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::y ( )
inline

Definition at line 111 of file Vec3.h.

template<typename T>
T openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::y ( ) const
inline

Definition at line 116 of file Vec3.h.

template<typename T>
T& openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::z ( )
inline

Definition at line 112 of file Vec3.h.

template<typename T>
T openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::z ( ) const
inline

Definition at line 117 of file Vec3.h.

template<typename T>
static Vec3<T> openvdb::OPENVDB_VERSION_NAME::math::Vec3< T >::zero ( )
inlinestatic

Predefined constants, e.g. Vec3d v = Vec3d::xNegAxis();.

Definition at line 481 of file Vec3.h.


The documentation for this class was generated from the following files: