ULIS  dev4.0.7
Utility Library for Imaging Systems
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
TVector2< T > Class Template Reference

The TVector2 class provides a simple 2D vector class for vector geometry applications. More...

Public Member Functions

constexpr TVector2 ()
 
template<typename U >
constexpr TVector2 (const TVector2< U > &iOther)
 
constexpr TVector2 (const TVector3< T > &iVec)
 
constexpr TVector2 (const TVector4< T > &iVec)
 
constexpr TVector2 (T iValue)
 
constexpr TVector2 (T iX, T iY)
 
template<typename U , typename V >
constexpr TVector2 (U iX, V iY)
 
constexpr TVector2 DecimalPart () const
 
constexpr T Distance () const
 
constexpr T DistanceSquared () const
 
constexpr T DotProduct (const TVector2 &iOther) const
 
constexpr T ManhattanDistance () const
 
constexpr TVector2Normalize ()
 
constexpr TVector2 Normalized () const
 
constexpr bool operator!= (const TVector2 &iOther) const
 
constexpr TVector2operator*= (const TVector2 &iOther)
 
template<typename U >
constexpr TVector2operator*= (U iValue)
 
template<typename U >
constexpr TVector2< T > & operator*= (U iValue)
 
constexpr TVector2operator+= (const TVector2 &iOther)
 
template<typename U >
constexpr TVector2operator+= (U iValue)
 
template<typename U >
constexpr TVector2< T > & operator+= (U iValue)
 
constexpr TVector2 operator- () const
 
constexpr TVector2operator-= (const TVector2 &iOther)
 
template<typename U >
constexpr TVector2operator-= (U iValue)
 
template<typename U >
constexpr TVector2< T > & operator-= (U iValue)
 
constexpr TVector2operator/= (const TVector2 &iOther)
 
template<typename U >
constexpr TVector2operator/= (U iValue)
 
template<typename U >
constexpr TVector2< T > & operator/= (U iValue)
 
constexpr bool operator== (const TVector2 &iOther) const
 
constexpr T & operator[] (int iIndex)
 
constexpr const T & operator[] (int iIndex) const
 
constexpr TVector2< T > xx () const
 
constexpr TVector3< T > xxx () const
 
constexpr TVector4< T > xxxx () const
 
constexpr TVector4< T > xxxy () const
 
constexpr TVector3< T > xxy () const
 
constexpr TVector4< T > xxyx () const
 
constexpr TVector4< T > xxyy () const
 
constexpr TVector2< T > xy () const
 
constexpr TVector3< T > xyx () const
 
constexpr TVector4< T > xyxx () const
 
constexpr TVector4< T > xyxy () const
 
constexpr TVector3< T > xyy () const
 
constexpr TVector4< T > xyyx () const
 
constexpr TVector4< T > xyyy () const
 
constexpr TVector2< T > yx () const
 
constexpr TVector3< T > yxx () const
 
constexpr TVector4< T > yxxx () const
 
constexpr TVector4< T > yxxy () const
 
constexpr TVector3< T > yxy () const
 
constexpr TVector4< T > yxyx () const
 
constexpr TVector4< T > yxyy () const
 
constexpr TVector2< T > yy () const
 
constexpr TVector3< T > yyx () const
 
constexpr TVector4< T > yyxx () const
 
constexpr TVector4< T > yyxy () const
 
constexpr TVector3< T > yyy () const
 
constexpr TVector4< T > yyyx () const
 
constexpr TVector4< T > yyyy () const
 

Static Public Member Functions

static TVector2 PyModulo (const TVector2 &iA, const TVector2 &iB)
 

Public Attributes

x
 
y
 

Detailed Description

template<typename T>
class TVector2< T >

The TVector2 class is a template class that provides basic 2D vector functionnalities, it can be used with any numeric types, ranging from integer values to floating point values.

Swizzle operators are also available for all vector types, you can call vec.xxx() or vec.xyyy(), etc.

For example:

FVec2F vec2( 5.0f, 0.75f );
FVec3F swizzledVec3xxx = vec2.xxx(); // ( 5.0f, 5.0f, 5.0f )
FVec4F swizzledVec4yxxy = vec2.yxxy(); // ( 0.75f, 5.0f, 5.0f, 0.75f )
FVec4I vec4( 0, 1, 2, 3 );
FVec4I swizzledVec4zzzw = vec4.zzzw(); // ( 2, 2, 2, 3 )

Following these guidelines for operator overloading.

Constructor & Destructor Documentation

◆ TVector2() [1/7]

template<typename T >
constexpr TVector2< T >::TVector2 ( )
constexpr

Default constructor for the vector, with default zero values.

◆ TVector2() [2/7]

template<typename T>
constexpr TVector2< T >::TVector2 ( iValue)
constexpr

Construct the vector from input value ( both x and y will have value iValue )

◆ TVector2() [3/7]

template<typename T>
constexpr TVector2< T >::TVector2 ( iX,
iY 
)
constexpr

Construct the vector from input values.

◆ TVector2() [4/7]

template<typename T>
constexpr TVector2< T >::TVector2 ( const TVector3< T > &  iVec)
constexpr

Construct the vector from TVector3.

◆ TVector2() [5/7]

template<typename T>
constexpr TVector2< T >::TVector2 ( const TVector4< T > &  iVec)
constexpr

Construct the vector from TVector4.

◆ TVector2() [6/7]

template<typename T >
template<typename U >
constexpr TVector2< T >::TVector2 ( const TVector2< U > &  iOther)
constexpr

Construct the vector from input vector of any convertible type.

◆ TVector2() [7/7]

template<typename T >
template<typename U , typename V >
constexpr TVector2< T >::TVector2 ( iX,
iY 
)
constexpr

Construct the vector from foreign type input values.

Member Function Documentation

◆ DecimalPart()

template<typename T >
constexpr TVector2< T > TVector2< T >::DecimalPart ( ) const
constexpr

Return the decimal part version of this vector.

◆ Distance()

template<typename T >
constexpr T TVector2< T >::Distance ( ) const
constexpr

Return the euclidean distance of the vector.

◆ DistanceSquared()

template<typename T >
constexpr T TVector2< T >::DistanceSquared ( ) const
constexpr

Return the squared euclidean distance of the vector. This can be useful for testing against another squared distance, thus saving a square root calculation.

◆ DotProduct()

template<typename T >
constexpr T TVector2< T >::DotProduct ( const TVector2< T > &  iOther) const
constexpr

Return the dot product of the vector

◆ ManhattanDistance()

template<typename T >
constexpr T TVector2< T >::ManhattanDistance ( ) const
constexpr

Return the manhattan distance of the vector. ( abs( x ) + abs( y ) )

◆ Normalize()

template<typename T >
constexpr TVector2< T > & TVector2< T >::Normalize ( )
constexpr

Normalize this vector.

◆ Normalized()

template<typename T >
constexpr TVector2< T > TVector2< T >::Normalized ( ) const
constexpr

Return the normalized version of this vector.

◆ operator!=()

template<typename T >
constexpr bool TVector2< T >::operator!= ( const TVector2< T > &  iOther) const
constexpr

Compare this vector to the other vector for strict inequality.

◆ operator*=() [1/3]

template<typename T >
constexpr TVector2< T > & TVector2< T >::operator*= ( const TVector2< T > &  iOther)
constexpr

Multiply this vector by the input vector and return a reference to this vector.

◆ operator*=() [2/3]

template<typename T>
template<typename U >
constexpr TVector2& TVector2< T >::operator*= ( iValue)
constexpr

Multiply this vector by the input value and return a reference to this vector.

◆ operator*=() [3/3]

template<typename T>
template<typename U >
constexpr TVector2< T >& TVector2< T >::operator*= ( iValue)
constexpr

◆ operator+=() [1/3]

template<typename T >
constexpr TVector2< T > & TVector2< T >::operator+= ( const TVector2< T > &  iOther)
constexpr

Add the input to this vector and return a reference to this vector.

◆ operator+=() [2/3]

template<typename T>
template<typename U >
constexpr TVector2& TVector2< T >::operator+= ( iValue)
constexpr

Add the input value to this vector and return a reference to this vector.

◆ operator+=() [3/3]

template<typename T>
template<typename U >
constexpr TVector2< T >& TVector2< T >::operator+= ( iValue)
constexpr

◆ operator-()

template<typename T >
constexpr TVector2< T > TVector2< T >::operator- ( ) const
constexpr

Unary Negative Operator

◆ operator-=() [1/3]

template<typename T >
constexpr TVector2< T > & TVector2< T >::operator-= ( const TVector2< T > &  iOther)
constexpr

Substract the input to this vector and return a reference to this vector.

◆ operator-=() [2/3]

template<typename T>
template<typename U >
constexpr TVector2& TVector2< T >::operator-= ( iValue)
constexpr

Substract the input value to this vector and return a reference to this vector.

◆ operator-=() [3/3]

template<typename T>
template<typename U >
constexpr TVector2< T >& TVector2< T >::operator-= ( iValue)
constexpr

◆ operator/=() [1/3]

template<typename T >
constexpr TVector2< T > & TVector2< T >::operator/= ( const TVector2< T > &  iOther)
constexpr

Divide this vector by the input vector and return a reference to this vector.

◆ operator/=() [2/3]

template<typename T>
template<typename U >
constexpr TVector2& TVector2< T >::operator/= ( iValue)
constexpr

Divide this vector by the input value and return a reference to this vector.

◆ operator/=() [3/3]

template<typename T>
template<typename U >
constexpr TVector2< T >& TVector2< T >::operator/= ( iValue)
constexpr

◆ operator==()

template<typename T >
constexpr bool TVector2< T >::operator== ( const TVector2< T > &  iOther) const
constexpr

Compare this vector to the other vector for strict equality.

◆ operator[]() [1/2]

template<typename T >
constexpr T & TVector2< T >::operator[] ( int  iIndex)
constexpr

Access component x or y by index, return a reference to the component.

◆ operator[]() [2/2]

template<typename T >
constexpr const T & TVector2< T >::operator[] ( int  iIndex) const
constexpr

Access component x or y by index, return a const reference to the component.

◆ PyModulo()

template<typename T >
TVector2< T > TVector2< T >::PyModulo ( const TVector2< T > &  iA,
const TVector2< T > &  iB 
)
static

◆ xx()

template<typename T >
constexpr TVector2< T > TVector2< T >::xx ( ) const
constexpr

Swizzle xx

◆ xxx()

template<typename T >
constexpr TVector3< T > TVector2< T >::xxx ( ) const
constexpr

Swizzle xxx

◆ xxxx()

template<typename T >
constexpr TVector4< T > TVector2< T >::xxxx ( ) const
constexpr

Swizzle xxxx

◆ xxxy()

template<typename T >
constexpr TVector4< T > TVector2< T >::xxxy ( ) const
constexpr

Swizzle xxxy

◆ xxy()

template<typename T >
constexpr TVector3< T > TVector2< T >::xxy ( ) const
constexpr

Swizzle xxy

◆ xxyx()

template<typename T >
constexpr TVector4< T > TVector2< T >::xxyx ( ) const
constexpr

Swizzle xxyx

◆ xxyy()

template<typename T >
constexpr TVector4< T > TVector2< T >::xxyy ( ) const
constexpr

Swizzle xxyy

◆ xy()

template<typename T >
constexpr TVector2< T > TVector2< T >::xy ( ) const
constexpr

Swizzle xy

◆ xyx()

template<typename T >
constexpr TVector3< T > TVector2< T >::xyx ( ) const
constexpr

Swizzle xyx

◆ xyxx()

template<typename T >
constexpr TVector4< T > TVector2< T >::xyxx ( ) const
constexpr

Swizzle xyxx

◆ xyxy()

template<typename T >
constexpr TVector4< T > TVector2< T >::xyxy ( ) const
constexpr

Swizzle xyxy

◆ xyy()

template<typename T >
constexpr TVector3< T > TVector2< T >::xyy ( ) const
constexpr

Swizzle xyy

◆ xyyx()

template<typename T >
constexpr TVector4< T > TVector2< T >::xyyx ( ) const
constexpr

Swizzle xyyx

◆ xyyy()

template<typename T >
constexpr TVector4< T > TVector2< T >::xyyy ( ) const
constexpr

Swizzle xyyy

◆ yx()

template<typename T >
constexpr TVector2< T > TVector2< T >::yx ( ) const
constexpr

Swizzle yx

◆ yxx()

template<typename T >
constexpr TVector3< T > TVector2< T >::yxx ( ) const
constexpr

Swizzle yxx

◆ yxxx()

template<typename T >
constexpr TVector4< T > TVector2< T >::yxxx ( ) const
constexpr

Swizzle yxxx

◆ yxxy()

template<typename T >
constexpr TVector4< T > TVector2< T >::yxxy ( ) const
constexpr

Swizzle yxxy

◆ yxy()

template<typename T >
constexpr TVector3< T > TVector2< T >::yxy ( ) const
constexpr

Swizzle yxy

◆ yxyx()

template<typename T >
constexpr TVector4< T > TVector2< T >::yxyx ( ) const
constexpr

Swizzle yxyx

◆ yxyy()

template<typename T >
constexpr TVector4< T > TVector2< T >::yxyy ( ) const
constexpr

Swizzle yxyy

◆ yy()

template<typename T >
constexpr TVector2< T > TVector2< T >::yy ( ) const
constexpr

Swizzle yy

◆ yyx()

template<typename T >
constexpr TVector3< T > TVector2< T >::yyx ( ) const
constexpr

Swizzle yyx

◆ yyxx()

template<typename T >
constexpr TVector4< T > TVector2< T >::yyxx ( ) const
constexpr

Swizzle yyxx

◆ yyxy()

template<typename T >
constexpr TVector4< T > TVector2< T >::yyxy ( ) const
constexpr

Swizzle yyxy

◆ yyy()

template<typename T >
constexpr TVector3< T > TVector2< T >::yyy ( ) const
constexpr

Swizzle yyy

◆ yyyx()

template<typename T >
constexpr TVector4< T > TVector2< T >::yyyx ( ) const
constexpr

Swizzle yyyx

◆ yyyy()

template<typename T >
constexpr TVector4< T > TVector2< T >::yyyy ( ) const
constexpr

Swizzle yyyy

Member Data Documentation

◆ x

template<typename T>
T TVector2< T >::x

The x component of the 2D vector.

◆ y

template<typename T>
T TVector2< T >::y

The y component of the 2D vector.

TVector4::zzzw
constexpr TVector4< T > zzzw() const
Definition: Vector.h:73
TVector3::xxx
constexpr TVector3< T > xxx() const
Definition: Vector.h:73
TVector3
The TVector3 class provides a simple 3D vector class for vector geometry applications.
Definition: FDecl.h:55
TVector4::yxxy
constexpr TVector4< T > yxxy() const
Definition: Vector.h:73
TVector4
The TVector4 class provides a simple 4D vector class for vector geometry applications.
Definition: FDecl.h:58
TVector2< float >