TGX 1.0.0
A tiny 2D/3D graphics library optimized for 32 bits microcontrollers.
Loading...
Searching...
No Matches
tgx::Vec3< T > Struct Template Reference

Generic 3D vector [specializations iVec3, fVec3, dVec3]. More...

#include <Vec3.h>

Inheritance diagram for tgx::Vec3< T >:
tgx::Vec2< T > tgx::Vec4< float > tgx::Vec4< T >

Public Member Functions

 Vec3 ()
 default constructor: the vector content is undefined.
 
constexpr Vec3 (T X, T Y, T Z)
 Constructor with explicit initialization.
 
 Vec3 (const Vec3 &V)=default
 Default copy constructor.
 
constexpr Vec3 (Vec2< T > V, T Z)
 Constructor from a Vec2.
 
Vec3operator= (const Vec3 &V)=default
 Default assignment operator.
 
template<typename U >
 operator Vec3< U > ()
 Explicit conversion to another vector with different integral type. More...
 
 operator Vec3< typename DefaultFPType< T >::fptype > ()
 Implicit conversion to floating point type vector.
 
bool operator== (const Vec3 V) const
 Equality comparator. More...
 
bool operator!= (const Vec3 V) const
 Inequality operator.
 
bool operator< (const Vec3 V) const
 Less-than comparison operator. More...
 
bool operator<= (const Vec3 V) const
 Less-than-or-equal comparison operator. More...
 
bool operator> (const Vec3 V) const
 Greater-than comparison operator. More...
 
bool operator>= (const Vec3 V) const
 Greater-than-or-equal comparison operator. More...
 
void operator+= (const Vec3 V)
 Add another vector to this one.
 
void operator-= (const Vec3 V)
 Substract another vector from this one.
 
void operator*= (const Vec3 V)
 Multiply this vector by another one (coordinate by coordinate multiplication).
 
void operator/= (const Vec3 V)
 Divide this vector by another one (coordinate by coordinate division).
 
void operator+= (const T v)
 scalar addition. More...
 
void operator-= (const T v)
 scalar substraction. More...
 
void operator*= (const T v)
 scalar multiplication. More...
 
void operator/= (const T v)
 scalar division. More...
 
Vec3 operator- () const
 unary negation operator
 
norm2 () const
 Compute the squared euclidian norm of the vector. More...
 
template<typename Tfloat = typename DefaultFPType<T>::fptype>
Tfloat norm () const
 Compute the euclidian norm of the vector. More...
 
template<typename Tfloat = typename DefaultFPType<T>::fptype>
Tfloat norm_fast () const
 Compute the euclidian norm of the vector. More...
 
template<typename Tfloat = typename DefaultFPType<T>::fptype>
Tfloat invnorm () const
 Compute the inverse of the euclidian norm of the vector. More...
 
template<typename Tfloat = typename DefaultFPType<T>::fptype>
Tfloat invnorm_fast () const
 Compute the inverse of the euclidian norm of the vector. More...
 
template<typename Tfloat = typename DefaultFPType<T>::fptype>
void normalize ()
 Normalise the vector so that its norm is 1 (do nothing if the vector is 0). More...
 
template<typename Tfloat = typename DefaultFPType<T>::fptype>
void normalize_fast ()
 Normalise the vector so that its norm is 1 (do nothing if the vector is 0). More...
 
template<typename Tfloat = typename DefaultFPType<T>::fptype>
Vec3< T > getNormalize () const
 Return the vector normalized to have unit norm (do nothing if the vector is 0). More...
 
template<typename Tfloat = typename DefaultFPType<T>::fptype>
Vec3< T > getNormalize_fast () const
 Return the vector normalized to have unit norm (do nothing if the vector is 0). More...
 
void print (Stream &outputStream=Serial) const
 Print a representation of the vector using a given stream object. More...
 
- Public Member Functions inherited from tgx::Vec2< T >
 Vec2 ()
 default constructor: the vector content is undefined.
 
constexpr Vec2 (T X, T Y)
 Constructor with explicit initialization.
 
 Vec2 (const Vec2 &v)=default
 Default copy constructor.
 
Vec2operator= (const Vec2 &V)=default
 Default assignment operator.
 
template<typename U >
 operator Vec2< U > ()
 Explicit conversion to another vector with different integral type. More...
 
 operator Vec2< typename DefaultFPType< T >::fptype > ()
 Implicit conversion to floating-point type vector.
 
bool operator== (const Vec2 V) const
 Equality comparator. More...
 
bool operator!= (const Vec2 V) const
 Inequality operator.
 
bool operator< (const Vec2 V) const
 Less-than comparison operator. More...
 
bool operator<= (const Vec2 V) const
 Less-than-or-equal comparison operator. More...
 
bool operator> (const Vec2 V) const
 Greater-than comparison operator. More...
 
bool operator>= (const Vec2 V) const
 Greater-than-or-equal comparison operator. More...
 
void operator+= (const Vec2 V)
 Add another vector to this one.
 
void operator-= (const Vec2 V)
 Substract another vector from this one.
 
void operator*= (const Vec2 V)
 Multiply this vector by another one (coordinate by coordinate multiplication).
 
void operator/= (const Vec2 V)
 Divide this vector by another one (coordinate by coordinate division).
 
void operator+= (const T &v)
 scalar addition. More...
 
void operator-= (const T &v)
 scalar substraction. More...
 
void operator*= (const T &v)
 scalar multiplication. More...
 
void operator/= (const T &v)
 scalar division. More...
 
Vec2 operator- () const
 unary negation operator
 
norm2 () const
 Compute the squared euclidian norm of the vector. More...
 
template<typename Tfloat = typename DefaultFPType<T>::fptype>
Tfloat norm () const
 Compute the euclidian norm of the vector. More...
 
template<typename Tfloat = typename DefaultFPType<T>::fptype>
Tfloat norm_fast () const
 Compute the euclidian norm of the vector. More...
 
template<typename Tfloat = typename DefaultFPType<T>::fptype>
Tfloat invnorm () const
 Compute the inverse of the euclidian norm of the vector. More...
 
template<typename Tfloat = typename DefaultFPType<T>::fptype>
Tfloat invnorm_fast () const
 Compute the inverse of the euclidian norm of the vector. More...
 
template<typename Tfloat = typename DefaultFPType<T>::fptype>
void normalize ()
 Normalise the vector so that its norm is 1 (do nothing if the vector is 0). More...
 
template<typename Tfloat = typename DefaultFPType<T>::fptype>
void normalize_fast ()
 Normalise the vector so that its norm is 1 (do nothing if the vector is 0). More...
 
template<typename Tfloat = typename DefaultFPType<T>::fptype>
Vec2< T > getNormalize () const
 Return the vector normalized to have unit norm (do nothing if the vector is 0). More...
 
template<typename Tfloat = typename DefaultFPType<T>::fptype>
Vec2< T > getNormalize_fast () const
 Return the vector normalized to have unit norm (do nothing if the vector is 0). More...
 
void rotate90 ()
 Rotate this vector by +90 degree (anti-clockise).
 
Vec2< T > getRotate90 () const
 Return the vector obtained after rotation by +90 degree (anti-clockise).
 
int leftOf (Vec2< T > LA, Vec2< T > LB) const
 Determine which half-space delimited by the line (LA,LB) the point represented by this vector belongs. More...
 
bool setAsIntersection (Vec2< T > LA1, Vec2< T > LA2, Vec2< T > LB1, Vec2< T > LB2)
 Set this vector as the intersection of the two lines (LA1,LA2) and (LB1,LB2). More...
 
void print (Stream &outputStream=Serial) const
 Print a representation of the vector using a given stream object. More...
 

Public Attributes

z
 'z' coordinate (third dimension)
 
- Public Attributes inherited from tgx::Vec2< T >
x
 'x' coordinate (first dimension)
 
y
 'y' coordinate (second dimension)
 

Detailed Description

template<typename T>
struct tgx::Vec3< T >

Generic 3D vector [specializations iVec3, fVec3, dVec3].

The class contains three public member variables x, y and z which define the 3D vector (x,y,z).

Template Parameters
`T`arithmetic type of the vector (int, float...)
See also
Vec2,Vec4

Member Function Documentation

◆ operator Vec3< U >()

template<typename T >
template<typename U >
tgx::Vec3< T >::operator Vec3< U > ( )
inlineexplicit

Explicit conversion to another vector with different integral type.

Warning
the conversion of the vectors components values from type T to type U is performed with a simple C-style cast.

◆ operator==()

template<typename T >
bool tgx::Vec3< T >::operator== ( const Vec3< T >  V) const
inline

Equality comparator.

Return true if all components compare equal.

◆ operator<()

template<typename T >
bool tgx::Vec3< T >::operator< ( const Vec3< T >  V) const
inline

Less-than comparison operator.

Use lexicographical order.

◆ operator<=()

template<typename T >
bool tgx::Vec3< T >::operator<= ( const Vec3< T >  V) const
inline

Less-than-or-equal comparison operator.

Use lexicographical order.

◆ operator>()

template<typename T >
bool tgx::Vec3< T >::operator> ( const Vec3< T >  V) const
inline

Greater-than comparison operator.

Use lexicographical order.

◆ operator>=()

template<typename T >
bool tgx::Vec3< T >::operator>= ( const Vec3< T >  V) const
inline

Greater-than-or-equal comparison operator.

Use lexicographical order.

◆ operator+=()

template<typename T >
void tgx::Vec3< T >::operator+= ( const T  v)
inline

scalar addition.

Add v to each of the vector components.

◆ operator-=()

template<typename T >
void tgx::Vec3< T >::operator-= ( const T  v)
inline

scalar substraction.

Add v to each of the vector components.

◆ operator*=()

template<typename T >
void tgx::Vec3< T >::operator*= ( const T  v)
inline

scalar multiplication.

Multiply each of the vector components by v.

◆ operator/=()

template<typename T >
void tgx::Vec3< T >::operator/= ( const T  v)
inline

scalar division.

Divde each of the vector components by v.

◆ norm2()

template<typename T >
T tgx::Vec3< T >::norm2 ( ) const
inline

Compute the squared euclidian norm of the vector.

See also
norm(), norm_fast()

◆ norm()

template<typename T >
template<typename Tfloat = typename DefaultFPType<T>::fptype>
Tfloat tgx::Vec3< T >::norm ( ) const
inline

Compute the euclidian norm of the vector.

Template Parameters
TfloatReturn type also used by computation. If left unspecified, the default floating type is used.
See also
norm_fast()

◆ norm_fast()

template<typename T >
template<typename Tfloat = typename DefaultFPType<T>::fptype>
Tfloat tgx::Vec3< T >::norm_fast ( ) const
inline

Compute the euclidian norm of the vector.

Use the tgx::fast_sqrt() approximation to speedup computations.

Template Parameters
TfloatReturn type also used by computation. If left unspecified, the default floating type is used.
See also
norm()

◆ invnorm()

template<typename T >
template<typename Tfloat = typename DefaultFPType<T>::fptype>
Tfloat tgx::Vec3< T >::invnorm ( ) const
inline

Compute the inverse of the euclidian norm of the vector.

Template Parameters
TfloatReturn type also used by computation. If left unspecified, the default floating type is used.
See also
invnorm_fast()

◆ invnorm_fast()

template<typename T >
template<typename Tfloat = typename DefaultFPType<T>::fptype>
Tfloat tgx::Vec3< T >::invnorm_fast ( ) const
inline

Compute the inverse of the euclidian norm of the vector.

Use the tgx::fast_invsqrt() approximation to speedup computations.

Template Parameters
TfloatReturn type also used by computation. If left unspecified, the default floating type is used.
See also
invnorm()

◆ normalize()

template<typename T >
template<typename Tfloat = typename DefaultFPType<T>::fptype>
void tgx::Vec3< T >::normalize ( )
inline

Normalise the vector so that its norm is 1 (do nothing if the vector is 0).

Template Parameters
TfloatFloating point type used for computation (use default floating point type if unspecified).
See also
normalize_fast()

◆ normalize_fast()

template<typename T >
template<typename Tfloat = typename DefaultFPType<T>::fptype>
void tgx::Vec3< T >::normalize_fast ( )
inline

Normalise the vector so that its norm is 1 (do nothing if the vector is 0).

Use fast_invsqrt() approxiamtion to speedup computations.

Template Parameters
TfloatFloating point type used for computation (use default floating point type if unspecified).
See also
normalize()

◆ getNormalize()

template<typename T >
template<typename Tfloat = typename DefaultFPType<T>::fptype>
Vec3< T > tgx::Vec3< T >::getNormalize ( ) const
inline

Return the vector normalized to have unit norm (do nothing if the vector is 0).

Template Parameters
TfloatFloating point type used for computation (use default floating point type if unspecified).
See also
getNormalize_fast()

◆ getNormalize_fast()

template<typename T >
template<typename Tfloat = typename DefaultFPType<T>::fptype>
Vec3< T > tgx::Vec3< T >::getNormalize_fast ( ) const
inline

Return the vector normalized to have unit norm (do nothing if the vector is 0).

Use fast_invsqrt() approxiamtion to speedup computations.

Template Parameters
TfloatFloating point type used for computation (use default floating point type if unspecified).
See also
getNormalize()

◆ print()

template<typename T >
void tgx::Vec3< T >::print ( Stream &  outputStream = Serial) const
inline

Print a representation of the vector using a given stream object.

Attention
Defined only in the Arduino environment.

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