Atoms Crowd  7.0.0
Vec3< T > Class Template Reference

#include <ImathVec.h>

Inheritance diagram for Vec3< T >:
Color3< T > Euler< T >

Public Types

typedef T BaseType
 

Public Member Functions

ATOMSMATH_HOSTDEVICE ATOMSMATH_CONSTEXPR14 T & operator[] (int i) noexcept
 Element access by index.

 
constexpr ATOMSMATH_HOSTDEVICE const T & operator[] (int i) const noexcept
 Element access by index.

 
short length () const noexcept=delete
 
const Vec3< short > & normalize () noexcept=delete
 
const Vec3< short > & normalizeExc ()=delete
 
const Vec3< short > & normalizeNonNull () noexcept=delete
 
Vec3< short > normalized () const noexcept=delete
 
Vec3< short > normalizedExc () const=delete
 
Vec3< short > normalizedNonNull () const noexcept=delete
 
int length () const noexcept=delete
 
const Vec3< int > & normalize () noexcept=delete
 
const Vec3< int > & normalizeExc ()=delete
 
const Vec3< int > & normalizeNonNull () noexcept=delete
 
Vec3< int > normalized () const noexcept=delete
 
Vec3< int > normalizedExc () const=delete
 
Vec3< int > normalizedNonNull () const noexcept=delete
 
template<class S >
constexpr Vec3 (const Vec3< S > &v) noexcept
 
template<class S >
constexpr Vec3 (const Vec4< S > &v) noexcept
 
template<class S >
void setValue (S a, S b, S c) noexcept
 
template<class S >
void setValue (const Vec3< S > &v) noexcept
 
template<class S >
void getValue (S &a, S &b, S &c) const noexcept
 
template<class S >
void getValue (Vec3< S > &v) const noexcept
 
template<class S >
constexpr bool operator== (const Vec3< S > &v) const noexcept
 
template<class S >
constexpr bool operator!= (const Vec3< S > &v) const noexcept
 
Constructors and Assignment
ATOMSMATH_HOSTDEVICE Vec3 () noexcept
 Uninitialized by default.
 
constexpr ATOMSMATH_HOSTDEVICE Vec3 (T a) noexcept
 Initialize to a scalar (a,a,a)
 
constexpr ATOMSMATH_HOSTDEVICE Vec3 (T a, T b, T c) noexcept
 Initialize to given elements (a,b,c)
 
constexpr ATOMSMATH_HOSTDEVICE Vec3 (const Vec3 &v) noexcept
 Copy constructor.
 
template<class S >
constexpr ATOMSMATH_HOSTDEVICE Vec3 (const Vec3< S > &v) noexcept
 Construct from Vec3 of another base type.
 
template<class S >
constexpr ATOMSMATH_HOSTDEVICE Vec3 (const Vec4< S > &v) noexcept
 
template<class S >
ATOMSMATH_CONSTEXPR14 Vec3 (const Vec4< S > &v, InfException)
 
ATOMSMATH_HOSTDEVICE ATOMSMATH_CONSTEXPR14 const Vec3operator= (const Vec3 &v) noexcept
 Assignment.
 
 ~Vec3 () noexcept=default
 Destructor.
 
Compatibility with Sb
template<class S >
ATOMSMATH_HOSTDEVICE void setValue (S a, S b, S c) noexcept
 Set the value.
 
template<class S >
ATOMSMATH_HOSTDEVICE void setValue (const Vec3< S > &v) noexcept
 Set the value.
 
template<class S >
ATOMSMATH_HOSTDEVICE void getValue (S &a, S &b, S &c) const noexcept
 Return the value in a, b, and c
 
template<class S >
ATOMSMATH_HOSTDEVICE void getValue (Vec3< S > &v) const noexcept
 Return the value in v
 
ATOMSMATH_HOSTDEVICE T * getValue () noexcept
 Return a raw pointer to the array of values.
 
ATOMSMATH_HOSTDEVICE const T * getValue () const noexcept
 Return a raw pointer to the array of values.
 
Arithmetic and Comparison
template<class S >
constexpr ATOMSMATH_HOSTDEVICE bool operator== (const Vec3< S > &v) const noexcept
 Equality.
 
template<class S >
constexpr ATOMSMATH_HOSTDEVICE bool operator!= (const Vec3< S > &v) const noexcept
 Inequality.
 
ATOMSMATH_HOSTDEVICE ATOMSMATH_CONSTEXPR14 bool equalWithAbsError (const Vec3< T > &v, T e) const noexcept
 
ATOMSMATH_HOSTDEVICE ATOMSMATH_CONSTEXPR14 bool equalWithRelError (const Vec3< T > &v, T e) const noexcept
 
constexpr ATOMSMATH_HOSTDEVICE T dot (const Vec3 &v) const noexcept
 Dot product.
 
constexpr ATOMSMATH_HOSTDEVICE T operator^ (const Vec3 &v) const noexcept
 Dot product.
 
constexpr ATOMSMATH_HOSTDEVICE Vec3 cross (const Vec3 &v) const noexcept
 Right-handed cross product.
 
ATOMSMATH_HOSTDEVICE ATOMSMATH_CONSTEXPR14 const Vec3operator%= (const Vec3 &v) noexcept
 Right-handed cross product.
 
constexpr ATOMSMATH_HOSTDEVICE Vec3 operator% (const Vec3 &v) const noexcept
 Right-handed cross product.
 
ATOMSMATH_HOSTDEVICE ATOMSMATH_CONSTEXPR14 const Vec3operator+= (const Vec3 &v) noexcept
 Component-wise addition.
 
constexpr ATOMSMATH_HOSTDEVICE Vec3 operator+ (const Vec3 &v) const noexcept
 Component-wise addition.
 
ATOMSMATH_HOSTDEVICE ATOMSMATH_CONSTEXPR14 const Vec3operator-= (const Vec3 &v) noexcept
 Component-wise subtraction.
 
constexpr ATOMSMATH_HOSTDEVICE Vec3 operator- (const Vec3 &v) const noexcept
 Component-wise subtraction.
 
constexpr ATOMSMATH_HOSTDEVICE Vec3 operator- () const noexcept
 Component-wise multiplication by -1.
 
ATOMSMATH_HOSTDEVICE ATOMSMATH_CONSTEXPR14 const Vec3negate () noexcept
 Component-wise multiplication by -1.
 
ATOMSMATH_HOSTDEVICE ATOMSMATH_CONSTEXPR14 const Vec3operator*= (const Vec3 &v) noexcept
 Component-wise multiplication.
 
ATOMSMATH_HOSTDEVICE ATOMSMATH_CONSTEXPR14 const Vec3operator*= (T a) noexcept
 Component-wise multiplication.
 
constexpr ATOMSMATH_HOSTDEVICE Vec3 operator* (const Vec3 &v) const noexcept
 Component-wise multiplication.
 
constexpr ATOMSMATH_HOSTDEVICE Vec3 operator* (T a) const noexcept
 Component-wise multiplication.
 
ATOMSMATH_HOSTDEVICE ATOMSMATH_CONSTEXPR14 const Vec3operator/= (const Vec3 &v) noexcept
 Component-wise division.
 
ATOMSMATH_HOSTDEVICE ATOMSMATH_CONSTEXPR14 const Vec3operator/= (T a) noexcept
 Component-wise division.
 
constexpr ATOMSMATH_HOSTDEVICE Vec3 operator/ (const Vec3 &v) const noexcept
 Component-wise division.
 
constexpr ATOMSMATH_HOSTDEVICE Vec3 operator/ (T a) const noexcept
 Component-wise division.
 
Query and Manipulation
ATOMSMATH_HOSTDEVICE T length () const noexcept
 Return the Euclidean norm.
 
constexpr ATOMSMATH_HOSTDEVICE T length2 () const noexcept
 
ATOMSMATH_HOSTDEVICE const Vec3normalize () noexcept
 Normalize in place. If length()==0, return a null vector.
 
const Vec3normalizeExc ()
 Normalize in place. If length()==0, throw an exception.
 
ATOMSMATH_HOSTDEVICE const Vec3normalizeNonNull () noexcept
 
ATOMSMATH_HOSTDEVICE Vec3< T > normalized () const noexcept
 Return a normalized vector. Does not modify *this.
 
Vec3< T > normalizedExc () const
 
ATOMSMATH_HOSTDEVICE Vec3< T > normalizedNonNull () const noexcept
 

Static Public Member Functions

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

Public Attributes

Direct access to elements
x
 
y
 
z
 

Detailed Description

template<class T>
class Vec3< T >

3-element vector

Member Typedef Documentation

◆ BaseType

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

Constructor & Destructor Documentation

◆ Vec3() [1/2]

template<class T >
template<class S >
constexpr ATOMSMATH_HOSTDEVICE Vec3< T >::Vec3 ( const Vec4< S > &  v)
explicitconstexprnoexcept

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.

◆ Vec3() [2/2]

template<class T >
template<class S >
ATOMSMATH_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.

Member Function Documentation

◆ equalWithAbsError()

template<class T >
ATOMSMATH_CONSTEXPR14 bool Vec3< T >::equalWithAbsError ( const Vec3< T > &  v,
e 
) const
inlinenoexcept

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

◆ equalWithRelError()

template<class T >
ATOMSMATH_CONSTEXPR14 bool Vec3< T >::equalWithRelError ( const Vec3< T > &  v,
e 
) const
inlinenoexcept

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])

◆ length2()

template<class T >
constexpr T Vec3< T >::length2
inlineconstexprnoexcept

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

◆ normalizedExc()

template<class T >
Vec3< T > Vec3< T >::normalizedExc
inline

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

◆ normalizedNonNull()

template<class T >
Vec3< T > Vec3< T >::normalizedNonNull
inlinenoexcept

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.

◆ normalizeNonNull()

template<class T >
const Vec3< T > & Vec3< T >::normalizeNonNull
inlinenoexcept

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.


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