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

#include <ImathVec.h>

+ Inheritance diagram for Vec3< T >:

Public Types

typedef T BaseType
 

Public Member Functions

IMATH_HOSTDEVICE
IMATH_CONSTEXPR14 T
operator[] (int i) IMATH_NOEXCEPT
 Element access by index. More...
 
IMATH_HOSTDEVICE constexpr
const T
operator[] (int i) const IMATH_NOEXCEPT
 Element access by index. More...
 
Constructors and Assignment
IMATH_HOSTDEVICE Vec3 () IMATH_NOEXCEPT
 Uninitialized by default. More...
 
IMATH_HOSTDEVICE constexpr Vec3 (T a) IMATH_NOEXCEPT
 Initialize to a scalar (a,a,a) More...
 
IMATH_HOSTDEVICE constexpr Vec3 (T a, T b, T c) IMATH_NOEXCEPT
 Initialize to given elements (a,b,c) More...
 
IMATH_HOSTDEVICE constexpr Vec3 (const Vec3 &v) IMATH_NOEXCEPT
 Copy constructor. More...
 
template<class S >
IMATH_HOSTDEVICE constexpr Vec3 (const Vec3< S > &v) IMATH_NOEXCEPT
 Construct from Vec3 of another base type. More...
 
template<class S >
IMATH_HOSTDEVICE constexpr Vec3 (const Vec4< S > &v) IMATH_NOEXCEPT
 
template<class S >
IMATH_HOSTDEVICE IMATH_CONSTEXPR14 Vec3 (const Vec4< S > &v, InfException)
 
IMATH_HOSTDEVICE
IMATH_CONSTEXPR14 const Vec3
operator= (const Vec3 &v) IMATH_NOEXCEPT
 Assignment. More...
 
 ~Vec3 () IMATH_NOEXCEPT=default
 Destructor. More...
 
Interoperability with other vector types

Construction and assignment are allowed from other classes that appear to be equivalent vector types, provided that they have either a subscripting operator, or data members .x, .y, .z, that are of the same type as the elements of this vector, and their size appears to be the right number of elements.

This functionality is disabled for gcc 4.x, which seems to have a compiler bug that results in spurious errors. It can also be disabled by defining IMATH_FOREIGN_VECTOR_INTEROP to be 0 prior to including any Imath header files.

template<typename V , IMATH_ENABLE_IF(has_xyz< V, T >::value) >
IMATH_HOSTDEVICE constexpr Vec3 (const V &v) IMATH_NOEXCEPT
 
template<typename V , IMATH_ENABLE_IF(has_subscript< V, T, 3 >::value &&!has_xyz< V, T >::value) >
IMATH_HOSTDEVICE Vec3 (const V &v)
 
template<typename V , IMATH_ENABLE_IF(has_xyz< V, T >::value) >
IMATH_HOSTDEVICE const Vec3operator= (const V &v) IMATH_NOEXCEPT
 
template<typename V , IMATH_ENABLE_IF(has_subscript< V, T, 3 >::value &&!has_xyz< V, T >::value) >
IMATH_HOSTDEVICE
IMATH_CONSTEXPR14 const Vec3
operator= (const V &v)
 
Compatibility with Sb
template<class S >
IMATH_HOSTDEVICE void setValue (S a, S b, S c) IMATH_NOEXCEPT
 Set the value. More...
 
template<class S >
IMATH_HOSTDEVICE void setValue (const Vec3< S > &v) IMATH_NOEXCEPT
 Set the value. More...
 
template<class S >
IMATH_HOSTDEVICE void getValue (S &a, S &b, S &c) const IMATH_NOEXCEPT
 Return the value in a, b, and c More...
 
template<class S >
IMATH_HOSTDEVICE void getValue (Vec3< S > &v) const IMATH_NOEXCEPT
 Return the value in v More...
 
IMATH_HOSTDEVICE TgetValue () IMATH_NOEXCEPT
 Return a raw pointer to the array of values. More...
 
IMATH_HOSTDEVICE const TgetValue () const IMATH_NOEXCEPT
 Return a raw pointer to the array of values. More...
 
Arithmetic and Comparison
template<class S >
IMATH_HOSTDEVICE constexpr bool operator== (const Vec3< S > &v) const IMATH_NOEXCEPT
 Equality. More...
 
template<class S >
IMATH_HOSTDEVICE constexpr bool operator!= (const Vec3< S > &v) const IMATH_NOEXCEPT
 Inequality. More...
 
IMATH_HOSTDEVICE
IMATH_CONSTEXPR14 bool 
equalWithAbsError (const Vec3< T > &v, T e) const IMATH_NOEXCEPT
 
IMATH_HOSTDEVICE
IMATH_CONSTEXPR14 bool 
equalWithRelError (const Vec3< T > &v, T e) const IMATH_NOEXCEPT
 
IMATH_HOSTDEVICE constexpr T dot (const Vec3 &v) const IMATH_NOEXCEPT
 Dot product. More...
 
IMATH_HOSTDEVICE constexpr T operator^ (const Vec3 &v) const IMATH_NOEXCEPT
 Dot product. More...
 
IMATH_HOSTDEVICE constexpr Vec3 cross (const Vec3 &v) const IMATH_NOEXCEPT
 Right-handed cross product. More...
 
IMATH_HOSTDEVICE
IMATH_CONSTEXPR14 const Vec3
operator%= (const Vec3 &v) IMATH_NOEXCEPT
 Right-handed cross product. More...
 
IMATH_HOSTDEVICE constexpr Vec3 operator% (const Vec3 &v) const IMATH_NOEXCEPT
 Right-handed cross product. More...
 
IMATH_HOSTDEVICE
IMATH_CONSTEXPR14 const Vec3
operator+= (const Vec3 &v) IMATH_NOEXCEPT
 Component-wise addition. More...
 
IMATH_HOSTDEVICE constexpr Vec3 operator+ (const Vec3 &v) const IMATH_NOEXCEPT
 Component-wise addition. More...
 
IMATH_HOSTDEVICE
IMATH_CONSTEXPR14 const Vec3
operator-= (const Vec3 &v) IMATH_NOEXCEPT
 Component-wise subtraction. More...
 
IMATH_HOSTDEVICE constexpr Vec3 operator- (const Vec3 &v) const IMATH_NOEXCEPT
 Component-wise subtraction. More...
 
IMATH_HOSTDEVICE constexpr Vec3 operator- () const IMATH_NOEXCEPT
 Component-wise multiplication by -1. More...
 
IMATH_HOSTDEVICE
IMATH_CONSTEXPR14 const Vec3
negate () IMATH_NOEXCEPT
 Component-wise multiplication by -1. More...
 
IMATH_HOSTDEVICE
IMATH_CONSTEXPR14 const Vec3
operator*= (const Vec3 &v) IMATH_NOEXCEPT
 Component-wise multiplication. More...
 
IMATH_HOSTDEVICE
IMATH_CONSTEXPR14 const Vec3
operator*= (T a) IMATH_NOEXCEPT
 Component-wise multiplication. More...
 
IMATH_HOSTDEVICE constexpr Vec3 operator* (const Vec3 &v) const IMATH_NOEXCEPT
 Component-wise multiplication. More...
 
IMATH_HOSTDEVICE constexpr Vec3 operator* (T a) const IMATH_NOEXCEPT
 Component-wise multiplication. More...
 
IMATH_HOSTDEVICE
IMATH_CONSTEXPR14 const Vec3
operator/= (const Vec3 &v) IMATH_NOEXCEPT
 Component-wise division. More...
 
IMATH_HOSTDEVICE
IMATH_CONSTEXPR14 const Vec3
operator/= (T a) IMATH_NOEXCEPT
 Component-wise division. More...
 
IMATH_HOSTDEVICE constexpr Vec3 operator/ (const Vec3 &v) const IMATH_NOEXCEPT
 Component-wise division. More...
 
IMATH_HOSTDEVICE constexpr Vec3 operator/ (T a) const IMATH_NOEXCEPT
 Component-wise division. More...
 
Query and Manipulation
IMATH_HOSTDEVICE T length () const IMATH_NOEXCEPT
 Return the Euclidean norm. More...
 
IMATH_HOSTDEVICE constexpr T length2 () const IMATH_NOEXCEPT
 
IMATH_HOSTDEVICE const Vec3normalize () IMATH_NOEXCEPT
 Normalize in place. If length()==0, return a null vector. More...
 
const Vec3normalizeExc ()
 Normalize in place. If length()==0, throw an exception. More...
 
IMATH_HOSTDEVICE const Vec3normalizeNonNull () IMATH_NOEXCEPT
 
IMATH_HOSTDEVICE Vec3< Tnormalized () const IMATH_NOEXCEPT
 Return a normalized vector. Does not modify *this. More...
 
Vec3< TnormalizedExc () const
 
IMATH_HOSTDEVICE Vec3< TnormalizedNonNull () const IMATH_NOEXCEPT
 

Static Public Member Functions

IMATH_HOSTDEVICE static
constexpr unsigned int 
dimensions () IMATH_NOEXCEPT
 Return the number of dimensions, i.e. 3. More...
 
Numeric Limits
IMATH_HOSTDEVICE static constexpr T baseTypeLowest () IMATH_NOEXCEPT
 Largest possible negative value. More...
 
IMATH_HOSTDEVICE static constexpr T baseTypeMax () IMATH_NOEXCEPT
 Largest possible positive value. More...
 
IMATH_HOSTDEVICE static constexpr T baseTypeSmallest () IMATH_NOEXCEPT
 Smallest possible positive value. More...
 
IMATH_HOSTDEVICE static constexpr T baseTypeEpsilon () IMATH_NOEXCEPT
 Smallest possible e for which 1+e != 1. More...
 

Public Attributes

Direct access to elements
T x
 
T y
 
T z
 

Detailed Description

template<class T>
class Vec3< T >

3-element vector

Definition at line 32 of file ImathVec.h.

Member Typedef Documentation

template<class T>
typedef T Vec3< T >::BaseType

The base type: In templates that accept a parameter V, you can refer to T as V::BaseType

Definition at line 564 of file ImathVec.h.

Constructor & Destructor Documentation

template<class T >
IMATH_HOSTDEVICE Vec3< T >::Vec3 ( )
inline

Uninitialized by default.

Definition at line 1382 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE constexpr Vec3< T >::Vec3 ( T  a)
inlineexplicit

Initialize to a scalar (a,a,a)

Definition at line 1387 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE constexpr Vec3< T >::Vec3 ( T  a,
T  b,
T  c 
)
inline

Initialize to given elements (a,b,c)

Definition at line 1392 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE constexpr Vec3< T >::Vec3 ( const Vec3< T > &  v)
inline

Copy constructor.

Definition at line 1397 of file ImathVec.h.

template<class T >
template<class S >
IMATH_HOSTDEVICE constexpr Vec3< T >::Vec3 ( const Vec3< S > &  v)
inline

Construct from Vec3 of another base type.

Definition at line 1403 of file ImathVec.h.

template<class T >
template<class S >
IMATH_HOSTDEVICE constexpr Vec3< T >::Vec3 ( const Vec4< S > &  v)
inlineexplicit

Vec4 to Vec3 conversion: divide x, y and z by w, even if w is 0. The result depends on how the environment handles floating-point exceptions.

Definition at line 1419 of file ImathVec.h.

template<class T >
template<class S >
IMATH_HOSTDEVICE IMATH_CONSTEXPR14 Vec3< T >::Vec3 ( const Vec4< S > &  v,
InfException   
)
inlineexplicit

Vec4 to Vec3 conversion: divide x, y and z by w. Throws an exception if w is zero or if division by w would overflow.

Definition at line 1426 of file ImathVec.h.

template<class T>
Vec3< T >::~Vec3 ( )
default

Destructor.

template<class T>
template<typename V , IMATH_ENABLE_IF(has_xyz< V, T >::value) >
IMATH_HOSTDEVICE constexpr Vec3< T >::Vec3 ( const V &  v)
inlineexplicit

Interoperability assignment from another type that behaves as if it were an equivalent vector.

Definition at line 373 of file ImathVec.h.

template<class T>
template<typename V , IMATH_ENABLE_IF(has_subscript< V, T, 3 >::value &&!has_xyz< V, T >::value) >
IMATH_HOSTDEVICE Vec3< T >::Vec3 ( const V &  v)
inlineexplicit

Interoperability assignment from another type that behaves as if it were an equivalent vector.

Definition at line 378 of file ImathVec.h.

Member Function Documentation

template<class T>
IMATH_HOSTDEVICE static constexpr T Vec3< T >::baseTypeEpsilon ( )
inlinestatic

Smallest possible e for which 1+e != 1.

Definition at line 555 of file ImathVec.h.

template<class T>
IMATH_HOSTDEVICE static constexpr T Vec3< T >::baseTypeLowest ( )
inlinestatic

Largest possible negative value.

Definition at line 546 of file ImathVec.h.

template<class T>
IMATH_HOSTDEVICE static constexpr T Vec3< T >::baseTypeMax ( )
inlinestatic

Largest possible positive value.

Definition at line 549 of file ImathVec.h.

template<class T>
IMATH_HOSTDEVICE static constexpr T Vec3< T >::baseTypeSmallest ( )
inlinestatic

Smallest possible positive value.

Definition at line 552 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE constexpr Vec3< T > Vec3< T >::cross ( const Vec3< T > &  v) const
inline

Right-handed cross product.

Definition at line 1556 of file ImathVec.h.

template<class T>
IMATH_HOSTDEVICE static constexpr unsigned int Vec3< T >::dimensions ( )
inlinestatic

Return the number of dimensions, i.e. 3.

Definition at line 560 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE constexpr T Vec3< T >::dot ( const Vec3< T > &  v) const
inline

Dot product.

Definition at line 1542 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE IMATH_CONSTEXPR14 bool Vec3< T >::equalWithAbsError ( const Vec3< T > &  v,
T  e 
) const
inline

Compare two matrices and test if they are "approximately equal":

Returns
True if the coefficients of this and m are the same with an absolute error of no more than e, i.e., for all i, j:
abs (this[i][j] - m[i][j]) <= e  

Definition at line 1520 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE IMATH_CONSTEXPR14 bool Vec3< T >::equalWithRelError ( const Vec3< T > &  v,
T  e 
) const
inline

Compare two matrices and test if they are "approximately equal":

Returns
True if the coefficients of this and m are the same with a relative error of no more than e, i.e., for all i, j:
abs (this[i] - v[i][j]) <= e * abs (this[i][j])  

Definition at line 1531 of file ImathVec.h.

template<class T >
template<class S >
IMATH_HOSTDEVICE void Vec3< T >::getValue ( S a,
S b,
S c 
) const
inline

Return the value in a, b, and c

Definition at line 1471 of file ImathVec.h.

template<class T >
template<class S >
IMATH_HOSTDEVICE void Vec3< T >::getValue ( Vec3< S > &  v) const
inline

Return the value in v

Definition at line 1481 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE T * Vec3< T >::getValue ( )
inline

Return a raw pointer to the array of values.

Definition at line 1490 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE const T * Vec3< T >::getValue ( ) const
inline

Return a raw pointer to the array of values.

Definition at line 1497 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE T Vec3< T >::length ( void  ) const
inline

Return the Euclidean norm.

Definition at line 1734 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE constexpr T Vec3< T >::length2 ( ) const
inline

Return the square of the Euclidean norm, i.e. the dot product with itself.

Definition at line 1746 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE IMATH_CONSTEXPR14 const Vec3< T > & Vec3< T >::negate ( )
inline

Component-wise multiplication by -1.

Definition at line 1624 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE const Vec3< T > & Vec3< T >::normalize ( )
inline

Normalize in place. If length()==0, return a null vector.

Definition at line 1753 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE Vec3< T > Vec3< T >::normalized ( ) const
inline

Return a normalized vector. Does not modify *this.

Definition at line 1801 of file ImathVec.h.

template<class T >
Vec3< T > Vec3< T >::normalizedExc ( ) const
inline

Return a normalized vector. Does not modify *this. Throw an exception if length()==0.

Definition at line 1813 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE Vec3< T > Vec3< T >::normalizedNonNull ( ) const
inline

Return a normalized vector. Does not modify *this, and does not check for length()==0. Slightly faster than the other normalization routines, but if v.length() is 0.0, the result is undefined.

Definition at line 1825 of file ImathVec.h.

template<class T >
const Vec3< T > & Vec3< T >::normalizeExc ( )
inline

Normalize in place. If length()==0, throw an exception.

Definition at line 1775 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE const Vec3< T > & Vec3< T >::normalizeNonNull ( )
inline

Normalize without any checks for length()==0. Slightly faster than the other normalization routines, but if v.length() is 0.0, the result is undefined.

Definition at line 1790 of file ImathVec.h.

template<class T >
template<class S >
IMATH_HOSTDEVICE constexpr bool Vec3< T >::operator!= ( const Vec3< S > &  v) const
inline

Inequality.

Definition at line 1513 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE constexpr Vec3< T > Vec3< T >::operator% ( const Vec3< T > &  v) const
inline

Right-handed cross product.

Definition at line 1576 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE IMATH_CONSTEXPR14 const Vec3< T > & Vec3< T >::operator%= ( const Vec3< T > &  v)
inline

Right-handed cross product.

Definition at line 1563 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE constexpr Vec3< T > Vec3< T >::operator* ( const Vec3< T > &  v) const
inline

Component-wise multiplication.

Definition at line 1654 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE constexpr Vec3< T > Vec3< T >::operator* ( T  a) const
inline

Component-wise multiplication.

Definition at line 1661 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE IMATH_CONSTEXPR14 const Vec3< T > & Vec3< T >::operator*= ( const Vec3< T > &  v)
inline

Component-wise multiplication.

Definition at line 1634 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE IMATH_CONSTEXPR14 const Vec3< T > & Vec3< T >::operator*= ( T  a)
inline

Component-wise multiplication.

Definition at line 1644 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE constexpr Vec3< T > Vec3< T >::operator+ ( const Vec3< T > &  v) const
inline

Component-wise addition.

Definition at line 1593 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE IMATH_CONSTEXPR14 const Vec3< T > & Vec3< T >::operator+= ( const Vec3< T > &  v)
inline

Component-wise addition.

Definition at line 1583 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE constexpr Vec3< T > Vec3< T >::operator- ( const Vec3< T > &  v) const
inline

Component-wise subtraction.

Definition at line 1610 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE constexpr Vec3< T > Vec3< T >::operator- ( ) const
inline

Component-wise multiplication by -1.

Definition at line 1617 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE IMATH_CONSTEXPR14 const Vec3< T > & Vec3< T >::operator-= ( const Vec3< T > &  v)
inline

Component-wise subtraction.

Definition at line 1600 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE constexpr Vec3< T > Vec3< T >::operator/ ( const Vec3< T > &  v) const
inline

Component-wise division.

Definition at line 1688 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE constexpr Vec3< T > Vec3< T >::operator/ ( T  a) const
inline

Component-wise division.

Definition at line 1695 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE IMATH_CONSTEXPR14 const Vec3< T > & Vec3< T >::operator/= ( const Vec3< T > &  v)
inline

Component-wise division.

Definition at line 1668 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE IMATH_CONSTEXPR14 const Vec3< T > & Vec3< T >::operator/= ( T  a)
inline

Component-wise division.

Definition at line 1678 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE IMATH_CONSTEXPR14 const Vec3< T > & Vec3< T >::operator= ( const Vec3< T > &  v)
inline

Assignment.

Definition at line 1410 of file ImathVec.h.

template<class T>
template<typename V , IMATH_ENABLE_IF(has_xyz< V, T >::value) >
IMATH_HOSTDEVICE const Vec3& Vec3< T >::operator= ( const V &  v)
inline

Interoperability assignment from another type that behaves as if it were an equivalent vector.

Definition at line 383 of file ImathVec.h.

template<class T>
template<typename V , IMATH_ENABLE_IF(has_subscript< V, T, 3 >::value &&!has_xyz< V, T >::value) >
IMATH_HOSTDEVICE IMATH_CONSTEXPR14 const Vec3& Vec3< T >::operator= ( const V &  v)
inline

Interoperability assignment from another type that behaves as if it were an equivalent vector.

Definition at line 392 of file ImathVec.h.

template<class T >
template<class S >
IMATH_HOSTDEVICE constexpr bool Vec3< T >::operator== ( const Vec3< S > &  v) const
inline

Equality.

Definition at line 1505 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE IMATH_CONSTEXPR14 T & Vec3< T >::operator[] ( int  i)
inline

Element access by index.

Definition at line 1370 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE constexpr const T & Vec3< T >::operator[] ( int  i) const
inline

Element access by index.

Definition at line 1377 of file ImathVec.h.

template<class T >
IMATH_HOSTDEVICE constexpr T Vec3< T >::operator^ ( const Vec3< T > &  v) const
inline

Dot product.

Definition at line 1549 of file ImathVec.h.

template<class T >
template<class S >
IMATH_HOSTDEVICE void Vec3< T >::setValue ( S  a,
S  b,
S  c 
)
inline

Set the value.

Definition at line 1451 of file ImathVec.h.

template<class T >
template<class S >
IMATH_HOSTDEVICE void Vec3< T >::setValue ( const Vec3< S > &  v)
inline

Set the value.

Definition at line 1461 of file ImathVec.h.

Member Data Documentation

template<class T>
T Vec3< T >::x

Definition at line 310 of file ImathVec.h.

template<class T>
T Vec3< T >::y

Definition at line 310 of file ImathVec.h.

template<class T>
T Vec3< T >::z

Definition at line 310 of file ImathVec.h.


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