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

2D Vector class. More...

#include <UT_Vector2.h>

+ Inheritance diagram for UT_Vector2T< T >:

Public Types

typedef UT_FixedVector< T,
2, true > 
Base
 
typedef T value_type
 
- Public Types inherited from UT_FixedVector< T, 2, true >
typedef UT_FixedVector< T,
SIZE, INSTANTIATED > 
ThisType
 
typedef T value_type
 
typedef T theType
 
typedef UT_StorageNum< TStorage
 

Public Member Functions

SYS_FORCE_INLINE UT_Vector2T ()=default
 
SYS_FORCE_INLINE UT_Vector2T (const UT_Vector2T< T > &that)=default
 
SYS_FORCE_INLINE UT_Vector2T (UT_Vector2T< T > &&that)=default
 
SYS_FORCE_INLINE UT_Vector2T (T v)
 
SYS_FORCE_INLINE UT_Vector2T (T vx, T vy)
 
SYS_FORCE_INLINE UT_Vector2T (const fpreal16 v[tuple_size])
 
SYS_FORCE_INLINE UT_Vector2T (const fpreal32 v[tuple_size])
 
SYS_FORCE_INLINE UT_Vector2T (const fpreal64 v[tuple_size])
 
SYS_FORCE_INLINE UT_Vector2T (const int32 v[tuple_size])
 
SYS_FORCE_INLINE UT_Vector2T (const int64 v[tuple_size])
 
 UT_Vector2T (const UT_Vector3T< T > &v)
 
 UT_Vector2T (const UT_Vector4T< T > &v)
 
template<typename S >
SYS_FORCE_INLINE UT_Vector2T (const UT_Vector2T< S > &v)
 Our own type of any given value_type. More...
 
template<typename S , bool S_INSTANTIATED>
SYS_FORCE_INLINE UT_Vector2T (const UT_FixedVector< S, tuple_size, S_INSTANTIATED > &v)
 Arbitrary UT_FixedVector of the same size. More...
 
SYS_FORCE_INLINE UT_Vector2T< T > & operator= (const UT_Vector2T< T > &that)=default
 
SYS_FORCE_INLINE UT_Vector2T< T > & operator= (UT_Vector2T< T > &&that)=default
 
template<typename S >
SYS_FORCE_INLINE UT_Vector2T< T > & operator= (const UT_Vector2T< S > &v)
 
UT_Vector2T< T > & operator= (const UT_Vector3T< T > &v)
 Assignment operator that truncates a V3 to a V2. More...
 
UT_Vector2T< T > & operator= (const UT_Vector4T< T > &v)
 Assignment operator that truncates a V4 to a V2. More...
 
SYS_FORCE_INLINE UT_Vector2T< Toperator- () const
 
void multiplyComponents (const UT_Vector2T< T > &v)
 
T whichSide (const UT_Vector2T< T > &e1, const UT_Vector2T< T > &e2) const
 
template<typename S >
UT_Vector2T< T > & operator*= (const UT_Matrix2T< S > &mat)
 
UT_Vector2T< Tproject (const UT_Vector2T< T > &u) const
 Calculates the orthogonal projection of a vector u on the *this vector. More...
 
UT_Vector2T< Tprojection (const UT_Vector2T< T > &p, const UT_Vector2T< T > &v) const
 
UT_Vector3T< TgetBary (const UT_Vector2T< T > &t0, const UT_Vector2T< T > &t1, const UT_Vector2T< T > &t2, bool *degen=NULL) const
 
unsigned hash () const
 Compute a hash. More...
 
void assign (T xx=0.0f, T yy=0.0f)
 Set the values of the vector components. More...
 
void assign (const T *v)
 Set the values of the vector components. More...
 
int findMinAbsAxis () const
 These allow you to find out what indices to use for different axes. More...
 
int findMaxAbsAxis () const
 These allow you to find out what indices to use for different axes. More...
 
Tx ()
 
T x () const
 
Ty ()
 
T y () const
 
Toperator() (unsigned i)
 
T operator() (unsigned i) const
 
void homogenize ()
 Express the point in homogeneous coordinates or vice-versa. More...
 
void dehomogenize ()
 Express the point in homogeneous coordinates or vice-versa. More...
 
void save (std::ostream &os, int binary=0) const
 Protected I/O methods. More...
 
bool load (UT_IStream &is)
 Protected I/O methods. More...
 
bool save (UT_JSONWriter &w) const
 
bool save (UT_JSONValue &v) const
 
bool load (UT_JSONParser &p)
 
- Public Member Functions inherited from UT_FixedVector< T, 2, true >
SYS_FORCE_INLINE UT_FixedVector ()=default
 
SYS_FORCE_INLINE UT_FixedVector (T that) noexcept
 Initializes every component to the same value. More...
 
SYS_FORCE_INLINE UT_FixedVector (const ThisType &that)=default
 
SYS_FORCE_INLINE UT_FixedVector (ThisType &&that)=default
 
SYS_FORCE_INLINE UT_FixedVector (const UT_FixedVector< S, SIZE, S_INSTANTIATED > &that) noexcept
 
SYS_FORCE_INLINE UT_FixedVector (const S that[SIZE]) noexcept
 
SYS_FORCE_INLINE const Toperator[] (exint i) const noexcept
 
SYS_FORCE_INLINE Toperator[] (exint i) noexcept
 
SYS_FORCE_INLINE constexpr
const T
data () const noexcept
 
SYS_FORCE_INLINE Tdata () noexcept
 
SYS_FORCE_INLINE ThisTypeoperator= (const ThisType &that)=default
 
SYS_FORCE_INLINE ThisTypeoperator= (ThisType &&that)=default
 
SYS_FORCE_INLINE ThisTypeoperator= (const UT_FixedVector< S, SIZE, S_INSTANTIATED > &that) noexcept
 
SYS_FORCE_INLINE const ThisTypeoperator= (T that) noexcept
 
SYS_FORCE_INLINE void operator+= (const UT_FixedVector< S, SIZE, S_INSTANTIATED > &that)
 
SYS_FORCE_INLINE void operator+= (T that)
 
SYS_FORCE_INLINE
UT_FixedVector< typename
UT_StorageBetter< T, S >::Type,
SIZE
operator+ (const UT_FixedVector< S, SIZE, S_INSTANTIATED > &that) const
 
SYS_FORCE_INLINE void operator-= (const UT_FixedVector< S, SIZE, S_INSTANTIATED > &that)
 
SYS_FORCE_INLINE void operator-= (T that)
 
SYS_FORCE_INLINE
UT_FixedVector< typename
UT_StorageBetter< T, S >::Type,
SIZE
operator- (const UT_FixedVector< S, SIZE, S_INSTANTIATED > &that) const
 
SYS_FORCE_INLINE
UT_FixedVector< T, SIZE
operator- () const
 
SYS_FORCE_INLINE void operator*= (const UT_FixedVector< S, SIZE, S_INSTANTIATED > &that)
 
SYS_FORCE_INLINE void operator*= (T that)
 
SYS_FORCE_INLINE
UT_FixedVector< typename
UT_StorageBetter< T, S >::Type,
SIZE
operator* (const UT_FixedVector< S, SIZE, S_INSTANTIATED > &that) const
 
SYS_FORCE_INLINE
UT_FixedVector< T, SIZE
operator* (T that) const
 
SYS_FORCE_INLINE void operator/= (const UT_FixedVector< S, SIZE, S_INSTANTIATED > &that)
 
SYS_FORCE_INLINE void operator/= (T that)
 
SYS_FORCE_INLINE
UT_FixedVector< typename
UT_StorageBetter< T, S >::Type,
SIZE
operator/ (const UT_FixedVector< S, SIZE, S_INSTANTIATED > &that) const
 
SYS_FORCE_INLINE
UT_FixedVector< T, SIZE
operator/ (T that) const
 
SYS_FORCE_INLINE void negate ()
 
SYS_FORCE_INLINE bool operator== (const UT_FixedVector< S, SIZE, S_INSTANTIATED > &that) const noexcept
 
SYS_FORCE_INLINE bool operator!= (const UT_FixedVector< S, SIZE, S_INSTANTIATED > &that) const noexcept
 
SYS_FORCE_INLINE bool isNan () const
 
SYS_FORCE_INLINE bool isFinite () const
 
SYS_FORCE_INLINE bool isZero () const noexcept
 
SYS_FORCE_INLINE bool equalZero (T tol=T(SYS_FTOLERANCE)) const
 
SYS_FORCE_INLINE bool isEqual (const UT_FixedVector< S, SIZE, S_INSTANTIATED > &that, S tol=S(SYS_FTOLERANCE)) const
 
SYS_FORCE_INLINE T maxComponent () const
 
SYS_FORCE_INLINE T minComponent () const
 
SYS_FORCE_INLINE T avgComponent () const
 
SYS_FORCE_INLINE
UT_StorageAtLeast32Bit< T, T >
::Type 
length2 () const noexcept
 
SYS_FORCE_INLINE Storage::MathFloat length () const
 
SYS_FORCE_INLINE
UT_StorageAtLeast32Bit< T, S >
::Type 
dot (const UT_FixedVector< S, SIZE, S_INSTANTIATED > &that) const
 
SYS_FORCE_INLINE
UT_StorageAtLeast32Bit< T, S >
::Type 
distance2 (const UT_FixedVector< S, SIZE, S_INSTANTIATED > &that) const
 
SYS_FORCE_INLINE UT_StorageNum
< typename UT_StorageBetter< T,
S >::Type >::MathFloat 
distance (const UT_FixedVector< S, SIZE, S_INSTANTIATED > &that) const
 
SYS_FORCE_INLINE Storage::MathFloat normalize ()
 
SYS_FORCE_INLINE bool operator< (const UT_FixedVector< S, SIZE, S_INSTANTIATED > &that) const noexcept
 
SYS_FORCE_INLINE bool operator<= (const UT_FixedVector< S, SIZE, S_INSTANTIATED > &that) const noexcept
 
SYS_FORCE_INLINE bool operator> (const UT_FixedVector< S, SIZE, S_INSTANTIATED > &that) const noexcept
 
SYS_FORCE_INLINE bool operator>= (const UT_FixedVector< S, SIZE, S_INSTANTIATED > &that) const noexcept
 

Static Public Member Functions

static int entries ()
 Returns the vector size. More...
 

Static Public Attributes

static const int tuple_size = 2
 
- Static Public Attributes inherited from UT_FixedVector< T, 2, true >
static const exint theSize
 

Friends

std::ostream & operator<< (std::ostream &os, const UT_Vector2T< T > &v)
 I/O friends. More...
 

Additional Inherited Members

- Public Attributes inherited from UT_FixedVector< T, 2, true >
T vec [SIZE]
 

Detailed Description

template<typename T>
class UT_Vector2T< T >

2D Vector class.

Definition at line 149 of file UT_Vector2.h.

Member Typedef Documentation

template<typename T>
typedef UT_FixedVector<T,2,true> UT_Vector2T< T >::Base

Definition at line 152 of file UT_Vector2.h.

template<typename T>
typedef T UT_Vector2T< T >::value_type

Definition at line 166 of file UT_Vector2.h.

Constructor & Destructor Documentation

template<typename T>
SYS_FORCE_INLINE UT_Vector2T< T >::UT_Vector2T ( )
default

Default constructor. No data is initialized! Use it for extra speed.

template<typename T>
SYS_FORCE_INLINE UT_Vector2T< T >::UT_Vector2T ( const UT_Vector2T< T > &  that)
default
template<typename T>
SYS_FORCE_INLINE UT_Vector2T< T >::UT_Vector2T ( UT_Vector2T< T > &&  that)
default
template<typename T>
SYS_FORCE_INLINE UT_Vector2T< T >::UT_Vector2T ( T  v)
inlineexplicit

Definition at line 176 of file UT_Vector2.h.

template<typename T>
SYS_FORCE_INLINE UT_Vector2T< T >::UT_Vector2T ( T  vx,
T  vy 
)
inline

Definition at line 182 of file UT_Vector2.h.

template<typename T>
SYS_FORCE_INLINE UT_Vector2T< T >::UT_Vector2T ( const fpreal16  v[tuple_size])
inlineexplicit

Definition at line 187 of file UT_Vector2.h.

template<typename T>
SYS_FORCE_INLINE UT_Vector2T< T >::UT_Vector2T ( const fpreal32  v[tuple_size])
inlineexplicit

Definition at line 190 of file UT_Vector2.h.

template<typename T>
SYS_FORCE_INLINE UT_Vector2T< T >::UT_Vector2T ( const fpreal64  v[tuple_size])
inlineexplicit

Definition at line 193 of file UT_Vector2.h.

template<typename T>
SYS_FORCE_INLINE UT_Vector2T< T >::UT_Vector2T ( const int32  v[tuple_size])
inlineexplicit

Definition at line 196 of file UT_Vector2.h.

template<typename T>
SYS_FORCE_INLINE UT_Vector2T< T >::UT_Vector2T ( const int64  v[tuple_size])
inlineexplicit

Definition at line 199 of file UT_Vector2.h.

template<typename T>
UT_Vector2T< T >::UT_Vector2T ( const UT_Vector3T< T > &  v)
explicit
template<typename T>
UT_Vector2T< T >::UT_Vector2T ( const UT_Vector4T< T > &  v)
explicit
template<typename T>
template<typename S >
SYS_FORCE_INLINE UT_Vector2T< T >::UT_Vector2T ( const UT_Vector2T< S > &  v)
inline

Our own type of any given value_type.

Definition at line 207 of file UT_Vector2.h.

template<typename T>
template<typename S , bool S_INSTANTIATED>
SYS_FORCE_INLINE UT_Vector2T< T >::UT_Vector2T ( const UT_FixedVector< S, tuple_size, S_INSTANTIATED > &  v)
inline

Arbitrary UT_FixedVector of the same size.

Definition at line 213 of file UT_Vector2.h.

Member Function Documentation

template<typename T>
void UT_Vector2T< T >::assign ( T  xx = 0.0f,
T  yy = 0.0f 
)
inline

Set the values of the vector components.

Definition at line 318 of file UT_Vector2.h.

template<typename T>
void UT_Vector2T< T >::assign ( const T v)
inline

Set the values of the vector components.

Definition at line 323 of file UT_Vector2.h.

template<typename T>
void UT_Vector2T< T >::dehomogenize ( )
inline

Express the point in homogeneous coordinates or vice-versa.

Definition at line 328 of file UT_Vector2.h.

template<typename T>
static int UT_Vector2T< T >::entries ( )
inlinestatic

Returns the vector size.

Definition at line 346 of file UT_Vector2.h.

template<typename T>
int UT_Vector2T< T >::findMaxAbsAxis ( ) const
inline

These allow you to find out what indices to use for different axes.

Definition at line 268 of file UT_Vector2.h.

template<typename T>
int UT_Vector2T< T >::findMinAbsAxis ( ) const
inline

These allow you to find out what indices to use for different axes.

Definition at line 261 of file UT_Vector2.h.

template<typename T>
UT_Vector3T<T> UT_Vector2T< T >::getBary ( const UT_Vector2T< T > &  t0,
const UT_Vector2T< T > &  t1,
const UT_Vector2T< T > &  t2,
bool *  degen = NULL 
) const

Compute (homogeneous) barycentric co-ordinates of this point relative to the triangle defined by t0, t1 and t2. (The point is projected into the triangle's plane.)

template<typename T>
unsigned UT_Vector2T< T >::hash ( void  ) const
inline

Compute a hash.

Definition at line 313 of file UT_Vector2.h.

template<typename T>
void UT_Vector2T< T >::homogenize ( )
inline

Express the point in homogeneous coordinates or vice-versa.

Definition at line 327 of file UT_Vector2.h.

template<typename T>
bool UT_Vector2T< T >::load ( UT_IStream is)

Protected I/O methods.

template<typename T>
bool UT_Vector2T< T >::load ( UT_JSONParser p)

Methods to serialize to a JSON stream. The vector is stored as an array of 2 reals.

template<typename T>
void UT_Vector2T< T >::multiplyComponents ( const UT_Vector2T< T > &  v)
inline

Definition at line 238 of file UT_Vector2.h.

template<typename T>
T& UT_Vector2T< T >::operator() ( unsigned  i)
inline

Return the components of the vector. The () operator does NOT check for the boundary condition.

Definition at line 300 of file UT_Vector2.h.

template<typename T>
T UT_Vector2T< T >::operator() ( unsigned  i) const
inline

Return the components of the vector. The () operator does NOT check for the boundary condition.

Definition at line 305 of file UT_Vector2.h.

template<typename T>
template<typename S >
UT_Vector2T<T>& UT_Vector2T< T >::operator*= ( const UT_Matrix2T< S > &  mat)
inline

Definition at line 256 of file UT_Vector2.h.

template<typename T>
SYS_FORCE_INLINE UT_Vector2T<T> UT_Vector2T< T >::operator- ( ) const
inline

It's unclear why this is needed, given UT_FixedVector::operator-(), but the compiler seems not to accept not having it.

Definition at line 234 of file UT_Vector2.h.

template<typename T>
SYS_FORCE_INLINE UT_Vector2T<T>& UT_Vector2T< T >::operator= ( const UT_Vector2T< T > &  that)
default
template<typename T>
SYS_FORCE_INLINE UT_Vector2T<T>& UT_Vector2T< T >::operator= ( UT_Vector2T< T > &&  that)
default
template<typename T>
template<typename S >
SYS_FORCE_INLINE UT_Vector2T<T>& UT_Vector2T< T >::operator= ( const UT_Vector2T< S > &  v)
inline

Definition at line 221 of file UT_Vector2.h.

template<typename T>
UT_Vector2T<T>& UT_Vector2T< T >::operator= ( const UT_Vector3T< T > &  v)

Assignment operator that truncates a V3 to a V2.

template<typename T>
UT_Vector2T<T>& UT_Vector2T< T >::operator= ( const UT_Vector4T< T > &  v)

Assignment operator that truncates a V4 to a V2.

template<typename T>
UT_Vector2T<T> UT_Vector2T< T >::project ( const UT_Vector2T< T > &  u) const

Calculates the orthogonal projection of a vector u on the *this vector.

template<typename T>
UT_Vector2T<T> UT_Vector2T< T >::projection ( const UT_Vector2T< T > &  p,
const UT_Vector2T< T > &  v 
) const

Vector p (representing a point in 2-space) and vector v define a line. This member returns the projection of "this" onto the line (the point on the line that is closest to this point).

template<typename T>
void UT_Vector2T< T >::save ( std::ostream &  os,
int  binary = 0 
) const

Protected I/O methods.

template<typename T>
bool UT_Vector2T< T >::save ( UT_JSONWriter w) const

Methods to serialize to a JSON stream. The vector is stored as an array of 2 reals.

template<typename T>
bool UT_Vector2T< T >::save ( UT_JSONValue v) const

Methods to serialize to a JSON stream. The vector is stored as an array of 2 reals.

template<typename T>
T UT_Vector2T< T >::whichSide ( const UT_Vector2T< T > &  e1,
const UT_Vector2T< T > &  e2 
) const
inline

Given an oriented line from e1 passing through e2, determine on which side of the line the point p lies. Alternatively, determine in which half plane, positive or negative, the point lies. If the segment degenerates to a point, then the point is always on it.

Definition at line 249 of file UT_Vector2.h.

template<typename T>
T& UT_Vector2T< T >::x ( )
inline

Return the components of the vector. The () operator does NOT check for the boundary condition.

Definition at line 296 of file UT_Vector2.h.

template<typename T>
T UT_Vector2T< T >::x ( ) const
inline

Return the components of the vector. The () operator does NOT check for the boundary condition.

Definition at line 297 of file UT_Vector2.h.

template<typename T>
T& UT_Vector2T< T >::y ( )
inline

Return the components of the vector. The () operator does NOT check for the boundary condition.

Definition at line 298 of file UT_Vector2.h.

template<typename T>
T UT_Vector2T< T >::y ( ) const
inline

Return the components of the vector. The () operator does NOT check for the boundary condition.

Definition at line 299 of file UT_Vector2.h.

Friends And Related Function Documentation

template<typename T>
std::ostream& operator<< ( std::ostream &  os,
const UT_Vector2T< T > &  v 
)
friend

I/O friends.

Definition at line 351 of file UT_Vector2.h.

Member Data Documentation

template<typename T>
const int UT_Vector2T< T >::tuple_size = 2
static

Definition at line 167 of file UT_Vector2.h.


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