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 (void)
 
T x (void) const
 
Ty (void)
 
T y (void) const
 
Toperator() (unsigned i)
 
T operator() (unsigned i) const
 
void homogenize (void)
 Express the point in homogeneous coordinates or vice-versa. More...
 
void dehomogenize (void)
 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.

Examples:
RAY/RAY_DemoSprite.C.

Definition at line 138 of file UT_Vector2.h.

Member Typedef Documentation

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

Definition at line 141 of file UT_Vector2.h.

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

Definition at line 155 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 165 of file UT_Vector2.h.

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

Definition at line 171 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 176 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 179 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 182 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 185 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 188 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 196 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 202 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 307 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 312 of file UT_Vector2.h.

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

Express the point in homogeneous coordinates or vice-versa.

Definition at line 317 of file UT_Vector2.h.

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

Returns the vector size.

Definition at line 335 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 257 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 250 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 ( ) const
inline

Compute a hash.

Definition at line 302 of file UT_Vector2.h.

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

Express the point in homogeneous coordinates or vice-versa.

Definition at line 316 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 227 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 289 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 294 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 245 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 223 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 210 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 238 of file UT_Vector2.h.

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

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

Definition at line 285 of file UT_Vector2.h.

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

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

Definition at line 286 of file UT_Vector2.h.

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

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

Definition at line 287 of file UT_Vector2.h.

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

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

Definition at line 288 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 340 of file UT_Vector2.h.

Member Data Documentation

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

Definition at line 156 of file UT_Vector2.h.


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