OpenVDB: Vec3< T > Class Template Reference

OpenVDB 8.0.0

Public Types | Public Member Functions | Static Public Member Functions | List of all members
Vec3< T > Class Template Reference

`#include <Vec3.h>`

## Public Types
using | value_type = T
using | ValueType = T

## Public Member Functions
| Vec3 ()=default
| 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 ()
T | x () const
| Get the component, e.g. float f = v.y();. More...
T | y () const
T | z () const
T * | asPointer ()
const T * | asPointer () const
T & | operator() (int i)
| Alternative indexed reference to the elements. More...
T | 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)
T | dot (const Vec3< T > &v) const
| Dot product. More...
T | length () const
| Length of the vector. More...
T | 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 ()
T | sum () const
| Return the sum of all the vector components. More...
T | 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...
T | 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...

## 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 ()

## Member Typedef Documentation

## ◆ value_type

using value_type = T

## ◆ ValueType

using ValueType = T

## Constructor & Destructor Documentation

## ◆ Vec3() [1/7]

Vec3 | ( |  | ) |
| default

Trivial constructor, the vector is NOT initialized.

Note
  destructor, copy constructor, assignment operator and move constructor are left to be defined by the compiler (default)

## ◆ Vec3() [2/7]

Vec3 | ( | T | val | ) |
| inlineexplicit

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

## ◆ Vec3() [3/7]

Vec3 | ( | T | x,
|  | T | y,
|  | T | z
| ) |  |
| inline

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

## ◆ Vec3() [4/7]

Vec3 | ( | Source * | a | ) |
| inline

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

## ◆ Vec3() [5/7]

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.

## ◆ Vec3() [6/7]

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.

## ◆ Vec3() [7/7]

Vec3 | ( | const Vec3< Other > & | v | ) |
| inline

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

Type conversion warnings are suppressed.

## Member Function Documentation

## ◆ add()

const 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);

## ◆ asPointer() [1/2]

T* asPointer | ( |  | ) |
| inline

## ◆ asPointer() [2/2]

const T* asPointer | ( |  | ) | const
| inline

## ◆ component()

T component | ( | const Vec3< T > & | onto,
|  | T | 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);

## ◆ cross() [1/2]

Vec3<T> cross | ( | const Vec3< T > & | v | ) | const
| inline

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

## ◆ cross() [2/2]

const 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"

## ◆ div()

const Vec3<T>& div | ( | T0 | scale,
|  | const Vec3< T1 > & | v
| ) |  |
| inline

## ◆ dot()

T dot | ( | const Vec3< T > & | v | ) | const
| inline

Dot product.

## ◆ eq()

bool eq | ( | const Vec3< T > & | v,
|  | T | eps = `static_cast<T>(1.0e-7)`
| ) |  | const
| inline

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

## ◆ exp()

const Vec3<T>& exp | ( |  | ) |
| inline

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

## ◆ getArbPerpendicular()

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();

## ◆ init()

const Vec3<T>& init | ( | T | x = `0`,
|  | T | y = `0`,
|  | T | z = `0`
| ) |  |
| inline

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

## ◆ length()

T length | ( |  | ) | const
| inline

Length of the vector.

## ◆ lengthSqr()

T lengthSqr | ( |  | ) | const
| inline

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

## ◆ log()

const Vec3<T>& log | ( |  | ) |
| inline

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

## ◆ normalize()

bool normalize | ( | T | eps = `T(1.0e-7)` | ) |
| inline

this = normalized this

## ◆ numColumns()

static unsigned numColumns | ( |  | ) |
| inlinestatic

## ◆ numElements()

static unsigned numElements | ( |  | ) |
| inlinestatic

## ◆ numRows()

static unsigned numRows | ( |  | ) |
| inlinestatic

## ◆ ones()

static Vec3<T> ones | ( |  | ) |
| inlinestatic

## ◆ operator()() [1/2]

T& operator() | ( | int | i | ) |
| inline

Alternative indexed reference to the elements.

## ◆ operator()() [2/2]

T operator() | ( | int | i | ) | const
| inline

Alternative indexed constant reference to the elements,.

## ◆ operator*=() [1/2]

const Vec3<T>& operator*= | ( | const Vec3< S > & | v1 | ) |
| inline

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

## ◆ operator*=() [2/2]

const Vec3<T>& operator*= | ( | S | scalar | ) |
| inline

Multiply each element of this vector by scalar.

## ◆ operator+=() [1/2]

const Vec3<T>& operator+= | ( | const Vec3< S > & | v1 | ) |
| inline

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

## ◆ operator+=() [2/2]

const Vec3<T>& operator+= | ( | S | scalar | ) |
| inline

Add scalar to each element of this vector.

## ◆ operator-()

Vec3<T> operator- | ( |  | ) | const
| inline

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

## ◆ operator-=() [1/2]

const Vec3<T>& operator-= | ( | const Vec3< S > & | v1 | ) |
| inline

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

## ◆ operator-=() [2/2]

const Vec3<T>& operator-= | ( | S | scalar | ) |
| inline

Subtract scalar from each element of this vector.

## ◆ operator/=() [1/2]

const Vec3<T>& operator/= | ( | const Vec3< S > & | v1 | ) |
| inline

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

## ◆ operator/=() [2/2]

const Vec3<T>& operator/= | ( | S | scalar | ) |
| inline

Divide each element of this vector by scalar.

## ◆ operator=()

const Vec3<T>& operator= | ( | const Vec3< Source > & | v | ) |
| inline

Assignment operator.

Type conversion warnings are not suppressed.

## ◆ product()

T product | ( |  | ) | const
| inline

Return the product of all the vector components.

## ◆ projection()

Vec3<T> projection | ( | const Vec3< T > & | onto,
|  | T | 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);

## ◆ reversed()

Vec3<T> reversed | ( |  | ) | const
| inline

Return the vector (z, y, x)

## ◆ scale()

const 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);

## ◆ setZero()

const Vec3<T>& setZero | ( |  | ) |
| inline

Set "this" vector to zero.

## ◆ sorted()

Vec3<T> sorted | ( |  | ) | const
| inline

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

## ◆ sub()

const 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);

## ◆ sum()

T sum | ( |  | ) | const
| inline

Return the sum of all the vector components.

## ◆ unit() [1/2]

Vec3<T> unit | ( | T | eps,
|  | T & | len
| ) |  | const
| inline

return normalized this and length, throws if null vector

## ◆ unit() [2/2]

Vec3<T> unit | ( | T | eps = `0` | ) | const
| inline

return normalized this, throws if null vector

## ◆ unitSafe()

Vec3<T> unitSafe | ( |  | ) | const
| inline

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

## ◆ x() [1/2]

T& x | ( |  | ) |
| inline

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

## ◆ x() [2/2]

T x | ( |  | ) | const
| inline

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

## ◆ y() [1/2]

T& y | ( |  | ) |
| inline

## ◆ y() [2/2]

T y | ( |  | ) | const
| inline

## ◆ z() [1/2]

T& z | ( |  | ) |
| inline

## ◆ z() [2/2]

T z | ( |  | ) | const
| inline

## ◆ zero()

static Vec3<T> zero | ( |  | ) |
| inlinestatic

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

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

- Mat.h
- Vec3.h