OpenVDB  12.0.0
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Attributes | List of all members
Vec2< T > Class Template Reference

#include <openvdb/math/Vec2.h>

Inherits Tuple< 2, T >.

Public Types

using value_type = T
 
using ValueType = T
 

Public Member Functions

 Vec2 ()=default
 
 Vec2 (T val)
 Construct a vector all of whose components have the given value. More...
 
 Vec2 (T x, T y)
 Constructor with two arguments, e.g. Vec2f v(1,2,3);. More...
 
template<typename Source >
 Vec2 (Source *a)
 Constructor with array argument, e.g. float a[2]; Vec2f v(a);. More...
 
template<typename Source >
 Vec2 (const Tuple< 2, Source > &t)
 Conversion constructor. More...
 
template<typename Other >
 Vec2 (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...
 
T & x ()
 Reference to the component, e.g. v.x() = 4.5f;. More...
 
T & y ()
 
x () const
 Get the component, e.g. float f = v.y();. More...
 
y () const
 
T & operator() (int i)
 Alternative indexed reference to the elements. More...
 
operator() (int i) const
 Alternative indexed constant reference to the elements,. More...
 
T * asPointer ()
 
const T * asPointer () const
 
const Vec2< T > & init (T x=0, T y=0)
 
const Vec2< T > & setZero ()
 Set "this" vector to zero. More...
 
template<typename Source >
const Vec2< T > & operator= (const Vec2< Source > &v)
 Assignment operator. More...
 
bool operator== (const Vec2< T > &v) const
 Equality operator, does exact floating point comparisons. More...
 
bool operator!= (const Vec2< T > &v) const
 Inequality operator, does exact floating point comparisons. More...
 
bool eq (const Vec2< 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...
 
Vec2< T > operator- () const
 Negation operator, for e.g. v1 = -v2;. More...
 
template<typename T0 , typename T1 >
const Vec2< T > & add (const Vec2< T0 > &v1, const Vec2< T1 > &v2)
 
template<typename T0 , typename T1 >
const Vec2< T > & sub (const Vec2< T0 > &v1, const Vec2< T1 > &v2)
 
template<typename T0 , typename T1 >
const Vec2< T > & scale (T0 scalar, const Vec2< T1 > &v)
 
template<typename T0 , typename T1 >
const Vec2< T > & div (T0 scalar, const Vec2< T1 > &v)
 
dot (const Vec2< T > &v) const
 Dot product. More...
 
length () const
 Length of the vector. More...
 
lengthSqr () const
 
const Vec2< T > & exp ()
 
const Vec2< 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=static_cast< T >(1.0e-8))
 this = normalized this More...
 
Vec2< T > unit (T eps=0) const
 return normalized this, throws if null vector More...
 
Vec2< T > unit (T eps, T &len) const
 return normalized this and length, throws if null vector More...
 
Vec2< T > unitSafe () const
 return normalized this, or (1, 0) if this is null vector More...
 
template<typename S >
const Vec2< T > & operator*= (S scalar)
 Multiply each element of this vector by scalar. More...
 
template<typename S >
const Vec2< T > & operator*= (const Vec2< S > &v1)
 Multiply each element of this vector by the corresponding element of the given vector. More...
 
template<typename S >
const Vec2< T > & operator/= (S scalar)
 Divide each element of this vector by scalar. More...
 
template<typename S >
const Vec2< T > & operator/= (const Vec2< S > &v1)
 Divide each element of this vector by the corresponding element of the given vector. More...
 
template<typename S >
const Vec2< T > & operator+= (S scalar)
 Add scalar to each element of this vector. More...
 
template<typename S >
const Vec2< T > & operator+= (const Vec2< S > &v1)
 Add each element of the given vector to the corresponding element of this vector. More...
 
template<typename S >
const Vec2< T > & operator-= (S scalar)
 Subtract scalar from each element of this vector. More...
 
template<typename S >
const Vec2< T > & operator-= (const Vec2< S > &v1)
 Subtract each element of the given vector from the corresponding element of this vector. More...
 
component (const Vec2< T > &onto, T eps=static_cast< T >(1.0e-8)) const
 
Vec2< T > projection (const Vec2< T > &onto, T eps=static_cast< T >(1.0e-8)) const
 
Vec2< T > getArbPerpendicular () const
 
operator[] (IdxT i) const
 
T & operator[] (IdxT i)
 
operator[] (int i) const
 
T & operator[] (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...
 
Compatibility

These are mostly for backwards compatibility with functions that take old-style Vs (which are just arrays).

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 const * asV () 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 Vec2< T > zero ()
 Predefined constants, e.g. Vec2f v = Vec2f::xNegAxis();. More...
 
static Vec2< T > ones ()
 

Static Public Attributes

static const int size
 

Protected Attributes

mm [SIZE]
 

Member Typedef Documentation

using value_type = T
using ValueType = T

Constructor & Destructor Documentation

Vec2 ( )
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)
Vec2 ( val)
inlineexplicit

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

Vec2 ( x,
y 
)
inline

Constructor with two arguments, e.g. Vec2f v(1,2,3);.

Vec2 ( Source *  a)
inline

Constructor with array argument, e.g. float a[2]; Vec2f v(a);.

Vec2 ( const Tuple< 2, Source > &  t)
inlineexplicit

Conversion constructor.

Vec2 ( 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.

Member Function Documentation

const Vec2<T>& add ( const Vec2< T0 > &  v1,
const Vec2< T1 > &  v2 
)
inline

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

T* asPointer ( )
inline
const T* asPointer ( ) const
inline
value_type* asV ( )
inlineinherited

Exposes the internal array. Be careful when using this function.

value_type const* asV ( ) const
inlineinherited

Exposes the internal array. Be careful when using this function.

T component ( const Vec2< T > &  onto,
eps = static_cast<T>(1.0e-8) 
) const
inline

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

const Vec2<T>& div ( T0  scalar,
const Vec2< T1 > &  v 
)
inline
T dot ( const Vec2< T > &  v) const
inline

Dot product.

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

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

const Vec2<T>& exp ( )
inline

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

Vec2<T> getArbPerpendicular ( ) const
inline

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

const Vec2<T>& init ( x = 0,
y = 0 
)
inline

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

bool isFinite ( ) const
inlineinherited

True if no Nan or Inf values are present.

bool isInfinite ( ) const
inlineinherited

True if an Inf is present in this tuple.

bool isNan ( ) const
inlineinherited

True if a Nan is present in this tuple.

bool isZero ( ) const
inlineinherited

True if all elements are exactly zero.

T length ( ) const
inline

Length of the vector.

T lengthSqr ( ) const
inline

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

const Vec2<T>& log ( )
inline

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

bool normalize ( eps = static_cast<T>(1.0e-8))
inline

this = normalized this

static unsigned numColumns ( )
inlinestatic
static unsigned numElements ( )
inlinestatic
static unsigned numRows ( )
inlinestatic
static Vec2<T> ones ( )
inlinestatic
bool operator!= ( const Vec2< T > &  v) const
inline

Inequality operator, does exact floating point comparisons.

T& operator() ( int  i)
inline

Alternative indexed reference to the elements.

T operator() ( int  i) const
inline

Alternative indexed constant reference to the elements,.

const Vec2<T>& operator*= ( scalar)
inline

Multiply each element of this vector by scalar.

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

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

const Vec2<T>& operator+= ( scalar)
inline

Add scalar to each element of this vector.

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

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

Vec2<T> operator- ( ) const
inline

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

const Vec2<T>& operator-= ( scalar)
inline

Subtract scalar from each element of this vector.

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

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

const Vec2<T>& operator/= ( scalar)
inline

Divide each element of this vector by scalar.

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

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

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

Assignment operator.

bool operator== ( const Vec2< T > &  v) const
inline

Equality operator, does exact floating point comparisons.

T operator[] ( IdxT  i) const
inlineinherited
T& operator[] ( IdxT  i)
inlineinherited
T operator[] ( int  i) const
inlineinherited
T& operator[] ( int  i)
inlineinherited
T product ( ) const
inline

Return the product of all the vector components.

Vec2<T> projection ( const Vec2< T > &  onto,
eps = static_cast<T>(1.0e-8) 
) const
inline

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

void read ( std::istream &  is)
inlineinherited
const Vec2<T>& scale ( T0  scalar,
const Vec2< T1 > &  v 
)
inline

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

const Vec2<T>& setZero ( )
inline

Set "this" vector to zero.

std::string str ( ) const
inlineinherited
Returns
string representation of Classname
const Vec2<T>& sub ( const Vec2< T0 > &  v1,
const Vec2< T1 > &  v2 
)
inline

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

T sum ( ) const
inline

Return the sum of all the vector components.

void toV ( S *  v) const
inlineinherited

Copies this tuple into an array of a compatible type.

Vec2<T> unit ( eps = 0) const
inline

return normalized this, throws if null vector

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

return normalized this and length, throws if null vector

Vec2<T> unitSafe ( ) const
inline

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

void write ( std::ostream &  os) const
inlineinherited
T& x ( )
inline

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

T x ( ) const
inline

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

T& y ( )
inline
T y ( ) const
inline
static Vec2<T> zero ( )
inlinestatic

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

Member Data Documentation

T mm[SIZE]
protectedinherited
const int size
staticinherited