NVIDIA Iray: Math API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Math Vector Class

Math vector class template of fixed dimension with generic operations. More...

Modules

  Internal Storage Class for Math Vector
  Storage class for math vectors with support for x, y, z, and w members for appropriate dimensions.
 

Classes

class   mi::math::Vector< T, DIM >
  Fixed-size math vector class template with generic operations. More...
 

Functions

template<typename T , Size DIM>
Vector< T, DIM > &  mi::math::operator+= (Vector< T, DIM > &lhs, const Vector< T, DIM > &rhs)
  Adds rhs elementwise to lhs and returns the modified lhs. More...
 
template<typename T , Size DIM>
Vector< T, DIM > &  mi::math::operator-= (Vector< T, DIM > &lhs, const Vector< T, DIM > &rhs)
  Subtracts rhs elementwise from lhs and returns the modified lhs. More...
 
template<typename T , Size DIM>
Vector< T, DIM > &  mi::math::operator*= (Vector< T, DIM > &lhs, const Vector< T, DIM > &rhs)
  Multiplies rhs elementwise with lhs and returns the modified lhs. More...
 
template<typename T , Size DIM>
Vector< T, DIM > &  mi::math::operator%= (Vector< T, DIM > &lhs, const Vector< T, DIM > &rhs)
  Computes lhs modulo rhs elementwise and returns the modified lhs. More...
 
template<typename T , typename U , Size DIM>
Vector< T, DIM > &  mi::math::operator/= (Vector< T, DIM > &lhs, const Vector< U, DIM > &rhs)
  Divides lhs elementwise by rhs and returns the modified lhs. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::operator+ (const Vector< T, DIM > &lhs, const Vector< T, DIM > &rhs)
  Adds lhs and rhs elementwise and returns the new result. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::operator- (const Vector< T, DIM > &lhs, const Vector< T, DIM > &rhs)
  Subtracts rhs elementwise from lhs and returns the new result. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::operator* (const Vector< T, DIM > &lhs, const Vector< T, DIM > &rhs)
  Multiplies rhs elementwise with lhs and returns the new result. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::operator% (const Vector< T, DIM > &lhs, const Vector< T, DIM > &rhs)
  Computes lhs modulo rhs elementwise and returns the new result. More...
 
template<typename T , typename U , Size DIM>
Vector< T, DIM >  mi::math::operator/ (const Vector< T, DIM > &lhs, const Vector< U, DIM > &rhs)
  Divides rhs elementwise by lhs and returns the new result. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::operator- (const Vector< T, DIM > &v)
  Negates the vector v elementwise and returns the new result. More...
 
template<typename T , typename TT , Size DIM>
Vector< T, DIM > &  mi::math::operator*= (Vector< T, DIM > &v, TT s)
  Multiplies the vector v elementwise with the scalar s and returns the modified vector v. More...
 
template<typename T , typename TT , Size DIM>
Vector< T, DIM > &  mi::math::operator%= (Vector< T, DIM > &v, TT s)
  Computes v modulo s elementwise and returns the modified vector v. More...
 
template<typename T , typename TT , Size DIM>
Vector< T, DIM > &  mi::math::operator/= (Vector< T, DIM > &v, TT s)
  Divides the vector v elementwise by the scalar s and returns the modified vector v. More...
 
template<typename T , typename TT , Size DIM>
Vector< T, DIM >  mi::math::operator* (const Vector< T, DIM > &v, TT s)
  Multiplies the vector v elementwise with the scalar s and returns the new result. More...
 
template<typename T , typename TT , Size DIM>
Vector< T, DIM >  mi::math::operator* (TT s, const Vector< T, DIM > &v)
  Multiplies the vector v elementwise with the scalar s and returns the new result. More...
 
template<typename T , typename TT , Size DIM>
Vector< T, DIM >  mi::math::operator% (const Vector< T, DIM > &v, TT s)
  Computes v modulo s elementwise and returns the new result. More...
 
template<typename T , typename TT , Size DIM>
Vector< T, DIM >  mi::math::operator/ (const Vector< T, DIM > &v, TT s)
  Divides the vector v elementwise by the scalar s and returns the new result. More...
 
template<typename T , Size DIM>
Vector< T, DIM > &  mi::math::operator++ (Vector< T, DIM > &vec)
  Pre-increments all elements of vec and returns the result. Modifies vec. More...
 
template<typename T , Size DIM>
Vector< T, DIM > &  mi::math::operator-- (Vector< T, DIM > &vec)
  Pre-decrements all elements of vec and returns the result. Modifies vec. More...
 
template<Size DIM>
Vector< bool, DIM >  mi::math::operator&& (const Vector< bool, DIM > &lhs, const Vector< bool, DIM > &rhs)
  Returns the elementwise logical and of two boolean vectors. More...
 
template<Size DIM>
Vector< bool, DIM >  mi::math::operator&& (bool lhs, const Vector< bool, DIM > &rhs)
  Returns the elementwise logical and of a bool and a boolean vector. More...
 
template<Size DIM>
Vector< bool, DIM >  mi::math::operator&& (const Vector< bool, DIM > &lhs, bool rhs)
  Returns the elementwise logical and of a boolean vector and a bool. More...
 
template<Size DIM>
Vector< bool, DIM >  mi::math::operator|| (const Vector< bool, DIM > &lhs, const Vector< bool, DIM > &rhs)
  Returns the elementwise logical or of two boolean vectors. More...
 
template<Size DIM>
Vector< bool, DIM >  mi::math::operator|| (bool lhs, const Vector< bool, DIM > &rhs)
  Returns the elementwise logical or of a bool and a boolean vector. More...
 
template<Size DIM>
Vector< bool, DIM >  mi::math::operator|| (const Vector< bool, DIM > &lhs, bool rhs)
  Returns the elementwise logical or of a boolean vector and a bool. More...
 
template<Size DIM>
Vector< bool, DIM >  mi::math::operator^ (const Vector< bool, DIM > &lhs, const Vector< bool, DIM > &rhs)
  Returns the elementwise logical xor of two boolean vectors. More...
 
template<Size DIM>
Vector< bool, DIM >  mi::math::operator^ (bool lhs, const Vector< bool, DIM > &rhs)
  Returns the elementwise logical xor of a bool and a boolean vector. More...
 
template<Size DIM>
Vector< bool, DIM >  mi::math::operator^ (const Vector< bool, DIM > &lhs, bool rhs)
  Returns the elementwise logical xor of a boolean vector and a bool. More...
 
template<Size DIM>
Vector< bool, DIM >  mi::math::operator! (const Vector< bool, DIM > &vec)
  Returns the elementwise logical not of a boolean vector. More...
 
template<typename T , Size DIM>
Vector< bool, DIM >  mi::math::elementwise_is_equal (const Vector< T, DIM > &lhs, const Vector< T, DIM > &rhs)
  Returns the boolean vector result of an elementwise equality comparison. More...
 
template<typename T , Size DIM>
Vector< bool, DIM >  mi::math::elementwise_is_not_equal (const Vector< T, DIM > &lhs, const Vector< T, DIM > &rhs)
  Returns the boolean vector result of an elementwise inequality comparison. More...
 
template<typename T , Size DIM>
Vector< bool, DIM >  mi::math::elementwise_is_less_than (const Vector< T, DIM > &lhs, const Vector< T, DIM > &rhs)
  Returns the boolean vector result of an elementwise less-than comparison. More...
 
template<typename T , Size DIM>
Vector< bool, DIM >  mi::math::elementwise_is_less_than_or_equal (const Vector< T, DIM > &lhs, const Vector< T, DIM > &rhs)
  Returns the boolean vector result of an elementwise less-than-or-equal comparison. More...
 
template<typename T , Size DIM>
Vector< bool, DIM >  mi::math::elementwise_is_greater_than (const Vector< T, DIM > &lhs, const Vector< T, DIM > &rhs)
  Returns the boolean vector result of an elementwise greater-than comparison. More...
 
template<typename T , Size DIM>
Vector< bool, DIM >  mi::math::elementwise_is_greater_than_or_equal (const Vector< T, DIM > &lhs, const Vector< T, DIM > &rhs)
  Returns the boolean vector result of an elementwise greater-than-or-equal comparison. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::abs (const Vector< T, DIM > &v)
  Returns a vector with the elementwise absolute values of the vector v. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::acos (const Vector< T, DIM > &v)
  Returns a vector with the elementwise arc cosine of the vector v. More...
 
template<typename T , Size DIM>
bool  mi::math::all (const Vector< T, DIM > &v)
  Returns true if all of all elements of v returns true. More...
 
template<typename T , Size DIM>
bool  mi::math::any (const Vector< T, DIM > &v)
  Returns true if any of any element of v returns true. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::asin (const Vector< T, DIM > &v)
  Returns a vector with the elementwise arc sine of the vector v. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::atan (const Vector< T, DIM > &v)
  Returns a vector with the elementwise arc tangent of the vector v. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::atan2 (const Vector< T, DIM > &v, const Vector< T, DIM > &w)
  Returns a vector with the elementwise arc tangent of the vector v / w. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::ceil (const Vector< T, DIM > &v)
  Returns a vector with the elementwise smallest integral value that is not less than the element in vector v. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::clamp (const Vector< T, DIM > &v, const Vector< T, DIM > &low, const Vector< T, DIM > &high)
  Returns the vector v elementwise clamped to the range [low, high]. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::clamp (const Vector< T, DIM > &v, const Vector< T, DIM > &low, T high)
  Returns the vector v elementwise clamped to the range [low, high]. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::clamp (const Vector< T, DIM > &v, T low, const Vector< T, DIM > &high)
  Returns the vector v elementwise clamped to the range [low, high]. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::clamp (const Vector< T, DIM > &v, T low, T high)
  Returns the vector v elementwise clamped to the range [low, high]. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::cos (const Vector< T, DIM > &v)
  Returns a vector with the elementwise cosine of the vector v. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::degrees (const Vector< T, DIM > &v)
  Converts elementwise radians in v to degrees. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::elementwise_max (const Vector< T, DIM > &lhs, const Vector< T, DIM > &rhs)
  Returns elementwise maximum of two vectors. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::elementwise_min (const Vector< T, DIM > &lhs, const Vector< T, DIM > &rhs)
  Returns elementwise minimum of two vectors. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::exp (const Vector< T, DIM > &v)
  Returns a vector with elementwise e to the power of the element in the vector v. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::exp2 (const Vector< T, DIM > &v)
  Returns a vector with elementwise 2 to the power of the element in the vector v. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::floor (const Vector< T, DIM > &v)
  Returns a vector with the elementwise largest integral value that is not greater than the element in vector v. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::fmod (const Vector< T, DIM > &a, const Vector< T, DIM > &b)
  Returns elementwise a modulo b, in other words, the remainder of a/b. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::fmod (const Vector< T, DIM > &a, T b)
  Returns elementwise a modulo b, in other words, the remainder of a/b. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::frac (const Vector< T, DIM > &v)
  Returns a vector with the elementwise positive fractional part of the vector v. More...
 
template<typename T , Size DIM>
bool  mi::math::is_approx_equal (const Vector< T, DIM > &left, const Vector< T, DIM > &right, T e)
  Compares the two given values elementwise for equality within the given epsilon. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::lerp (const Vector< T, DIM > &v1, const Vector< T, DIM > &v2, const Vector< T, DIM > &t)
  Returns the elementwise linear interpolation between v1 and v2, i.e., it returns (1-t) * v1 + t * v2. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::lerp (const Vector< T, DIM > &v1, const Vector< T, DIM > &v2, T t)
  Returns the linear interpolation between v1 and v2, i.e., it returns (1-t) * v1 + t * v2. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::log (const Vector< T, DIM > &v)
  Returns a vector with the elementwise natural logarithm of the vector v. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::log2 (const Vector< T, DIM > &v)
  Returns a vector with the elementwise base 2 logarithm of the vector v. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::log10 (const Vector< T, DIM > &v)
  Returns a vector with the elementwise base 10 logarithm of the vector v. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::modf (const Vector< T, DIM > &v, Vector< T, DIM > &i)
  Returns the elementwise fractional part of v and stores the elementwise integral part of v in i. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::pow (const Vector< T, DIM > &a, const Vector< T, DIM > &b)
  Returns the vector a elementwise to the power of b. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::pow (const Vector< T, DIM > &a, T b)
  Returns the vector a elementwise to the power of b. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::radians (const Vector< T, DIM > &v)
  Converts elementwise degrees in v to radians. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::round (const Vector< T, DIM > &v)
  Returns a vector with the elements of vector v rounded to nearest integers. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::rsqrt (const Vector< T, DIM > &v)
  Returns the reciprocal of the square root of each element of v. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::saturate (const Vector< T, DIM > &v)
  Returns the vector v clamped elementwise to the range [0,1]. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::sign (const Vector< T, DIM > &v)
  Returns the elementwise sign of vector v. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::sin (const Vector< T, DIM > &v)
  Returns a vector with the elementwise sine of the vector v. More...
 
template<typename T , Size DIM>
void  mi::math::sincos (const Vector< T, DIM > &a, Vector< T, DIM > &s, Vector< T, DIM > &c)
  Computes elementwise the sine s and cosine c of angles a simultaneously. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::smoothstep (const Vector< T, DIM > &a, const Vector< T, DIM > &b, const Vector< T, DIM > &v)
  Returns 0 if v is less than a and 1 if v is greater than b in an elementwise fashion. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::smoothstep (const Vector< T, DIM > &a, const Vector< T, DIM > &b, T x)
  Returns 0 if x is less than a and 1 if x is greater than b in an elementwise fashion. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::sqrt (const Vector< T, DIM > &v)
  Returns the square root of each element of v. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::step (const Vector< T, DIM > &a, const Vector< T, DIM > &v)
  Returns elementwise 0 if v is less than a and 1 otherwise. More...
 
template<typename T , Size DIM>
Vector< T, DIM >  mi::math::tan (const Vector< T, DIM > &v)
  Returns a vector with the elementwise tangent of the vector v. More...
 
template<typename T >
mi::math::cross (const Vector< T, 2 > &lhs, const Vector< T, 2 > &rhs)
  Returns the two-times-two determinant result for the two vectors lhs and rhs. More...
 
template<typename T >
Vector< T, 3 >  mi::math::cross (const Vector< T, 3 > &lhs, const Vector< T, 3 > &rhs)
  Returns the three-dimensional cross product result for the two vectors lhs and rhs. More...
 
template<typename T >
void  mi::math::make_basis (const Vector< T, 3 > &n, Vector< T, 3 > *u, Vector< T, 3 > *v)
  Computes a basis of 3D space with one given vector. More...
 
template<typename T >
void  mi::math::make_basis (const Vector< T, 3 > &n, const Vector< T, 3 > &u, const Vector< T, 3 > &v, Vector< T, 3 > *t, Vector< T, 3 > *b)
  Computes a basis of 3D space with one given vector, plane, and direction. More...
 
template<typename T2 , Size DIM2, typename T1 , Size DIM1>
Vector< T2, DIM2 >  mi::math::convert_vector (const Vector< T1, DIM1 > &v, const T2 &fill=T2(0))
  Converts the vector v of type Vector<T1, DIM1> to a vector of type Vector<T2, DIM2>. More...
 

Detailed Description

Math vector class template of fixed dimension with generic operations.

Include File:
#include <mi/math/vector.h>

Function Documentation

template<typename T , Size DIM>
Vector<T,DIM> mi::math::abs ( const Vector< T, DIM > &  v)
inline

Returns a vector with the elementwise absolute values of the vector v.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::acos ( const Vector< T, DIM > &  v)
inline

Returns a vector with the elementwise arc cosine of the vector v.

template<typename T , Size DIM>
bool mi::math::all ( const Vector< T, DIM > &  v)
inline

Returns true if all of all elements of v returns true.

template<typename T , Size DIM>
bool mi::math::any ( const Vector< T, DIM > &  v)
inline

Returns true if any of any element of v returns true.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::asin ( const Vector< T, DIM > &  v)
inline

Returns a vector with the elementwise arc sine of the vector v.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::atan ( const Vector< T, DIM > &  v)
inline

Returns a vector with the elementwise arc tangent of the vector v.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::atan2 ( const Vector< T, DIM > &  v,
const Vector< T, DIM > &  w 
)
inline

Returns a vector with the elementwise arc tangent of the vector v / w.

The signs of the elements of v and w are used to determine the quadrant of the results.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::ceil ( const Vector< T, DIM > &  v)
inline

Returns a vector with the elementwise smallest integral value that is not less than the element in vector v.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::clamp ( const Vector< T, DIM > &  v,
const Vector< T, DIM > &  low,
const Vector< T, DIM > &  high 
)
inline

Returns the vector v elementwise clamped to the range [low, high].

template<typename T , Size DIM>
Vector<T,DIM> mi::math::clamp ( const Vector< T, DIM > &  v,
const Vector< T, DIM > &  low,
high 
)
inline

Returns the vector v elementwise clamped to the range [low, high].

template<typename T , Size DIM>
Vector<T,DIM> mi::math::clamp ( const Vector< T, DIM > &  v,
low,
const Vector< T, DIM > &  high 
)
inline

Returns the vector v elementwise clamped to the range [low, high].

template<typename T , Size DIM>
Vector<T,DIM> mi::math::clamp ( const Vector< T, DIM > &  v,
low,
high 
)
inline

Returns the vector v elementwise clamped to the range [low, high].

template<typename T2 , Size DIM2, typename T1 , Size DIM1>
Vector<T2, DIM2> mi::math::convert_vector ( const Vector< T1, DIM1 > &  v,
const T2 &  fill = T2(0) 
)
inline

Converts the vector v of type Vector<T1, DIM1> to a vector of type Vector<T2, DIM2>.

If DIM1 < DIM2, the remaining values are filled with fill. If DIM1 > DIM2, the values that do not fit into the result vector are discarded. The conversion from T1 to T2 must be possible.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::cos ( const Vector< T, DIM > &  v)
inline

Returns a vector with the elementwise cosine of the vector v.

template<typename T >
T mi::math::cross ( const Vector< T, 2 > &  lhs,
const Vector< T, 2 > &  rhs 
)
inline

Returns the two-times-two determinant result for the two vectors lhs and rhs.

template<typename T >
Vector<T,3> mi::math::cross ( const Vector< T, 3 > &  lhs,
const Vector< T, 3 > &  rhs 
)
inline

Returns the three-dimensional cross product result for the two vectors lhs and rhs.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::degrees ( const Vector< T, DIM > &  v)
inline

Converts elementwise radians in v to degrees.

template<typename T , Size DIM>
Vector<bool,DIM> mi::math::elementwise_is_equal ( const Vector< T, DIM > &  lhs,
const Vector< T, DIM > &  rhs 
)
inline

Returns the boolean vector result of an elementwise equality comparison.

template<typename T , Size DIM>
Vector<bool,DIM> mi::math::elementwise_is_greater_than ( const Vector< T, DIM > &  lhs,
const Vector< T, DIM > &  rhs 
)
inline

Returns the boolean vector result of an elementwise greater-than comparison.

template<typename T , Size DIM>
Vector<bool,DIM> mi::math::elementwise_is_greater_than_or_equal ( const Vector< T, DIM > &  lhs,
const Vector< T, DIM > &  rhs 
)
inline

Returns the boolean vector result of an elementwise greater-than-or-equal comparison.

template<typename T , Size DIM>
Vector<bool,DIM> mi::math::elementwise_is_less_than ( const Vector< T, DIM > &  lhs,
const Vector< T, DIM > &  rhs 
)
inline

Returns the boolean vector result of an elementwise less-than comparison.

template<typename T , Size DIM>
Vector<bool,DIM> mi::math::elementwise_is_less_than_or_equal ( const Vector< T, DIM > &  lhs,
const Vector< T, DIM > &  rhs 
)
inline

Returns the boolean vector result of an elementwise less-than-or-equal comparison.

template<typename T , Size DIM>
Vector<bool,DIM> mi::math::elementwise_is_not_equal ( const Vector< T, DIM > &  lhs,
const Vector< T, DIM > &  rhs 
)
inline

Returns the boolean vector result of an elementwise inequality comparison.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::elementwise_max ( const Vector< T, DIM > &  lhs,
const Vector< T, DIM > &  rhs 
)
inline

Returns elementwise maximum of two vectors.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::elementwise_min ( const Vector< T, DIM > &  lhs,
const Vector< T, DIM > &  rhs 
)
inline

Returns elementwise minimum of two vectors.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::exp ( const Vector< T, DIM > &  v)
inline

Returns a vector with elementwise e to the power of the element in the vector v.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::exp2 ( const Vector< T, DIM > &  v)
inline

Returns a vector with elementwise 2 to the power of the element in the vector v.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::floor ( const Vector< T, DIM > &  v)
inline

Returns a vector with the elementwise largest integral value that is not greater than the element in vector v.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::fmod ( const Vector< T, DIM > &  a,
const Vector< T, DIM > &  b 
)
inline

Returns elementwise a modulo b, in other words, the remainder of a/b.

The elementwise result has the same sign as a.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::fmod ( const Vector< T, DIM > &  a,
b 
)
inline

Returns elementwise a modulo b, in other words, the remainder of a/b.

The elementwise result has the same sign as a.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::frac ( const Vector< T, DIM > &  v)
inline

Returns a vector with the elementwise positive fractional part of the vector v.

template<typename T , Size DIM>
bool mi::math::is_approx_equal ( const Vector< T, DIM > &  left,
const Vector< T, DIM > &  right,
e 
)
inline

Compares the two given values elementwise for equality within the given epsilon.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::lerp ( const Vector< T, DIM > &  v1,
const Vector< T, DIM > &  v2,
const Vector< T, DIM > &  t 
)
inline

Returns the elementwise linear interpolation between v1 and v2, i.e., it returns (1-t) * v1 + t * v2.

Parameters
v1 one vector
v2 second vector
t interpolation parameter in [0,1]
template<typename T , Size DIM>
Vector<T,DIM> mi::math::lerp ( const Vector< T, DIM > &  v1,
const Vector< T, DIM > &  v2,
t 
)
inline

Returns the linear interpolation between v1 and v2, i.e., it returns (1-t) * v1 + t * v2.

Parameters
v1 one vector
v2 second vector
t interpolation parameter in [0,1]
template<typename T , Size DIM>
Vector<T,DIM> mi::math::log ( const Vector< T, DIM > &  v)
inline

Returns a vector with the elementwise natural logarithm of the vector v.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::log10 ( const Vector< T, DIM > &  v)
inline

Returns a vector with the elementwise base 10 logarithm of the vector v.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::log2 ( const Vector< T, DIM > &  v)
inline

Returns a vector with the elementwise base 2 logarithm of the vector v.

template<typename T >
void mi::math::make_basis ( const Vector< T, 3 > &  n,
Vector< T, 3 > *  u,
Vector< T, 3 > *  v 
)
inline

Computes a basis of 3D space with one given vector.

Given a unit length vector n, computes two vectors u and v such that (u, n, v) forms an orthonormal basis (u and v are unit length). This function is not continuous with respect to n: in some cases, a small perturbation on n will flip the basis.

Parameters
n input, normal vector
u output, first vector in tangent plane
v output, second vector in tangent plane
template<typename T >
void mi::math::make_basis ( const Vector< T, 3 > &  n,
const Vector< T, 3 > &  u,
const Vector< T, 3 > &  v,
Vector< T, 3 > *  t,
Vector< T, 3 > *  b 
)
inline

Computes a basis of 3D space with one given vector, plane, and direction.

Given a unit length vector n, and two non-colinear and non-zero vectors u and v, this function computes two vectors t and b such that (t, n, b) forms an orthonormal basis (t and b are unit length), t lies in the plane formed by n and u, and b has the same orientation as v, i.e., dot(b, v) >= 0.

Parameters
n input, normal vector
u input, first direction vector
v input, second direction vector
t output, first vector in tangent plane
b output, second vector in tangent plane
template<typename T , Size DIM>
Vector<T,DIM> mi::math::modf ( const Vector< T, DIM > &  v,
Vector< T, DIM > &  i 
)
inline

Returns the elementwise fractional part of v and stores the elementwise integral part of v in i.

Both parts have elementwise the same sign as v.

template<Size DIM>
Vector<bool,DIM> mi::math::operator! ( const Vector< bool, DIM > &  vec)
inline

Returns the elementwise logical not of a boolean vector.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::operator% ( const Vector< T, DIM > &  lhs,
const Vector< T, DIM > &  rhs 
)
inline

Computes lhs modulo rhs elementwise and returns the new result.

Only defined for typenames T having the % operator.

template<typename T , typename TT , Size DIM>
Vector<T,DIM> mi::math::operator% ( const Vector< T, DIM > &  v,
TT  s 
)
inline

Computes v modulo s elementwise and returns the new result.

Only defined for typenames T having the % operator for TT arguments.

template<typename T , Size DIM>
Vector<T,DIM>& mi::math::operator%= ( Vector< T, DIM > &  lhs,
const Vector< T, DIM > &  rhs 
)
inline

Computes lhs modulo rhs elementwise and returns the modified lhs.

Only defined for typenames T having the % operator.

template<typename T , typename TT , Size DIM>
Vector<T,DIM>& mi::math::operator%= ( Vector< T, DIM > &  v,
TT  s 
)
inline

Computes v modulo s elementwise and returns the modified vector v.

Only defined for typenames T having the % operator for TT arguments.

template<Size DIM>
Vector<bool,DIM> mi::math::operator&& ( const Vector< bool, DIM > &  lhs,
const Vector< bool, DIM > &  rhs 
)
inline

Returns the elementwise logical and of two boolean vectors.

template<Size DIM>
Vector<bool,DIM> mi::math::operator&& ( bool  lhs,
const Vector< bool, DIM > &  rhs 
)
inline

Returns the elementwise logical and of a bool and a boolean vector.

template<Size DIM>
Vector<bool,DIM> mi::math::operator&& ( const Vector< bool, DIM > &  lhs,
bool  rhs 
)
inline

Returns the elementwise logical and of a boolean vector and a bool.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::operator* ( const Vector< T, DIM > &  lhs,
const Vector< T, DIM > &  rhs 
)
inline

Multiplies rhs elementwise with lhs and returns the new result.

template<typename T , typename TT , Size DIM>
Vector<T,DIM> mi::math::operator* ( const Vector< T, DIM > &  v,
TT  s 
)
inline

Multiplies the vector v elementwise with the scalar s and returns the new result.

template<typename T , typename TT , Size DIM>
Vector<T,DIM> mi::math::operator* ( TT  s,
const Vector< T, DIM > &  v 
)
inline

Multiplies the vector v elementwise with the scalar s and returns the new result.

template<typename T , Size DIM>
Vector<T,DIM>& mi::math::operator*= ( Vector< T, DIM > &  lhs,
const Vector< T, DIM > &  rhs 
)
inline

Multiplies rhs elementwise with lhs and returns the modified lhs.

template<typename T , typename TT , Size DIM>
Vector<T,DIM>& mi::math::operator*= ( Vector< T, DIM > &  v,
TT  s 
)
inline

Multiplies the vector v elementwise with the scalar s and returns the modified vector v.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::operator+ ( const Vector< T, DIM > &  lhs,
const Vector< T, DIM > &  rhs 
)
inline

Adds lhs and rhs elementwise and returns the new result.

template<typename T , Size DIM>
Vector<T,DIM>& mi::math::operator++ ( Vector< T, DIM > &  vec)
inline

Pre-increments all elements of vec and returns the result. Modifies vec.

template<typename T , Size DIM>
Vector<T,DIM>& mi::math::operator+= ( Vector< T, DIM > &  lhs,
const Vector< T, DIM > &  rhs 
)
inline

Adds rhs elementwise to lhs and returns the modified lhs.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::operator- ( const Vector< T, DIM > &  lhs,
const Vector< T, DIM > &  rhs 
)
inline

Subtracts rhs elementwise from lhs and returns the new result.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::operator- ( const Vector< T, DIM > &  v)
inline

Negates the vector v elementwise and returns the new result.

template<typename T , Size DIM>
Vector<T,DIM>& mi::math::operator-- ( Vector< T, DIM > &  vec)
inline

Pre-decrements all elements of vec and returns the result. Modifies vec.

template<typename T , Size DIM>
Vector<T,DIM>& mi::math::operator-= ( Vector< T, DIM > &  lhs,
const Vector< T, DIM > &  rhs 
)
inline

Subtracts rhs elementwise from lhs and returns the modified lhs.

template<typename T , typename U , Size DIM>
Vector<T,DIM> mi::math::operator/ ( const Vector< T, DIM > &  lhs,
const Vector< U, DIM > &  rhs 
)
inline

Divides rhs elementwise by lhs and returns the new result.

template<typename T , typename TT , Size DIM>
Vector<T,DIM> mi::math::operator/ ( const Vector< T, DIM > &  v,
TT  s 
)
inline

Divides the vector v elementwise by the scalar s and returns the new result.

template<typename T , typename U , Size DIM>
Vector<T,DIM>& mi::math::operator/= ( Vector< T, DIM > &  lhs,
const Vector< U, DIM > &  rhs 
)
inline

Divides lhs elementwise by rhs and returns the modified lhs.

template<typename T , typename TT , Size DIM>
Vector<T,DIM>& mi::math::operator/= ( Vector< T, DIM > &  v,
TT  s 
)
inline

Divides the vector v elementwise by the scalar s and returns the modified vector v.

template<Size DIM>
Vector<bool,DIM> mi::math::operator^ ( const Vector< bool, DIM > &  lhs,
const Vector< bool, DIM > &  rhs 
)
inline

Returns the elementwise logical xor of two boolean vectors.

template<Size DIM>
Vector<bool,DIM> mi::math::operator^ ( bool  lhs,
const Vector< bool, DIM > &  rhs 
)
inline

Returns the elementwise logical xor of a bool and a boolean vector.

template<Size DIM>
Vector<bool,DIM> mi::math::operator^ ( const Vector< bool, DIM > &  lhs,
bool  rhs 
)
inline

Returns the elementwise logical xor of a boolean vector and a bool.

template<Size DIM>
Vector<bool,DIM> mi::math::operator|| ( const Vector< bool, DIM > &  lhs,
const Vector< bool, DIM > &  rhs 
)
inline

Returns the elementwise logical or of two boolean vectors.

template<Size DIM>
Vector<bool,DIM> mi::math::operator|| ( bool  lhs,
const Vector< bool, DIM > &  rhs 
)
inline

Returns the elementwise logical or of a bool and a boolean vector.

template<Size DIM>
Vector<bool,DIM> mi::math::operator|| ( const Vector< bool, DIM > &  lhs,
bool  rhs 
)
inline

Returns the elementwise logical or of a boolean vector and a bool.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::pow ( const Vector< T, DIM > &  a,
const Vector< T, DIM > &  b 
)
inline

Returns the vector a elementwise to the power of b.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::pow ( const Vector< T, DIM > &  a,
b 
)
inline

Returns the vector a elementwise to the power of b.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::radians ( const Vector< T, DIM > &  v)
inline

Converts elementwise degrees in v to radians.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::round ( const Vector< T, DIM > &  v)
inline

Returns a vector with the elements of vector v rounded to nearest integers.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::rsqrt ( const Vector< T, DIM > &  v)
inline

Returns the reciprocal of the square root of each element of v.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::saturate ( const Vector< T, DIM > &  v)
inline

Returns the vector v clamped elementwise to the range [0,1].

template<typename T , Size DIM>
Vector<T,DIM> mi::math::sign ( const Vector< T, DIM > &  v)
inline

Returns the elementwise sign of vector v.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::sin ( const Vector< T, DIM > &  v)
inline

Returns a vector with the elementwise sine of the vector v.

template<typename T , Size DIM>
void mi::math::sincos ( const Vector< T, DIM > &  a,
Vector< T, DIM > &  s,
Vector< T, DIM > &  c 
)
inline

Computes elementwise the sine s and cosine c of angles a simultaneously.

The angles a are specified in radians.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::smoothstep ( const Vector< T, DIM > &  a,
const Vector< T, DIM > &  b,
const Vector< T, DIM > &  v 
)
inline

Returns 0 if v is less than a and 1 if v is greater than b in an elementwise fashion.

A smooth curve is applied in-between so that the return values vary continuously from 0 to 1 as elements in v vary from a to b.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::smoothstep ( const Vector< T, DIM > &  a,
const Vector< T, DIM > &  b,
x 
)
inline

Returns 0 if x is less than a and 1 if x is greater than b in an elementwise fashion.

A smooth curve is applied in-between so that the return values vary continuously from 0 to 1 as x varies from a to b.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::sqrt ( const Vector< T, DIM > &  v)
inline

Returns the square root of each element of v.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::step ( const Vector< T, DIM > &  a,
const Vector< T, DIM > &  v 
)
inline

Returns elementwise 0 if v is less than a and 1 otherwise.

template<typename T , Size DIM>
Vector<T,DIM> mi::math::tan ( const Vector< T, DIM > &  v)
inline

Returns a vector with the elementwise tangent of the vector v.