Irrlicht 3D Engine
irr::core::vector2d< T > Class Template Reference

2d vector template class with lots of operators and methods. More...

#include <dimension2d.h>

Public Member Functions

 vector2d ()
 Default constructor (null vector) More...
 
 vector2d (T nx, T ny)
 Constructor with two different values. More...
 
 vector2d (T n)
 Constructor with the same value for both members. More...
 
 vector2d (const vector2d< T > &other)
 Copy constructor. More...
 
 vector2d (const dimension2d< T > &other)
 
bool areClockwise (const vector2d< T > &b, const vector2d< T > &c) const
 
bool areCounterClockwise (const vector2d< T > &b, const vector2d< T > &c) const
 
s32 checkOrientation (const vector2d< T > &b, const vector2d< T > &c) const
 
dotProduct (const vector2d< T > &other) const
 Get the dot product of this vector with another. More...
 
bool equals (const vector2d< T > &other, const T tolerance=(T) ROUNDING_ERROR_f32) const
 Checks if this vector equals the other one. More...
 
f64 getAngle () const
 Calculates the angle of this vector in degrees in the counter trigonometric sense. More...
 
f64 getAngleTrig () const
 Calculates the angle of this vector in degrees in the trigonometric sense. More...
 
f64 getAngleWith (const vector2d< T > &b) const
 Calculates the angle between this vector and another one in degree. More...
 
getDistanceFrom (const vector2d< T > &other) const
 Gets distance from another point. More...
 
getDistanceFromSQ (const vector2d< T > &other) const
 Returns squared distance from another point. More...
 
vector2d< T > getInterpolated (const vector2d< T > &other, f64 d) const
 Creates an interpolated vector between this vector and another vector. More...
 
vector2d< T > getInterpolated_quadratic (const vector2d< T > &v2, const vector2d< T > &v3, f64 d) const
 Creates a quadratically interpolated vector between this and two other vectors. More...
 
getLength () const
 Gets the length of the vector. More...
 
getLengthSQ () const
 Get the squared length of this vector. More...
 
vector2d< T > & interpolate (const vector2d< T > &a, const vector2d< T > &b, f64 d)
 Sets this vector to the linearly interpolated vector between a and b. More...
 
bool isBetweenPoints (const vector2d< T > &begin, const vector2d< T > &end) const
 Returns if this vector interpreted as a point is on a line between two other points. More...
 
bool nearlyParallel (const vector2d< T > &other, const T factor=relativeErrorFactor< T >()) const
 check if this vector is parallel to another vector More...
 
vector2d< T > & normalize ()
 Normalize the vector. More...
 
vector2d< T > operator * (const vector2d< T > &other) const
 
vector2d< T > operator * (const T v) const
 
vector2d< T > & operator *= (const vector2d< T > &other)
 
vector2d< T > & operator *= (const T v)
 
bool operator!= (const vector2d< T > &other) const
 
vector2d< T > operator+ (const vector2d< T > &other) const
 
vector2d< T > operator+ (const dimension2d< T > &other) const
 
vector2d< T > operator+ (const T v) const
 
vector2d< T > & operator+= (const vector2d< T > &other)
 
vector2d< T > & operator+= (const T v)
 
vector2d< T > & operator+= (const dimension2d< T > &other)
 
vector2d< T > operator- () const
 
vector2d< T > operator- (const vector2d< T > &other) const
 
vector2d< T > operator- (const dimension2d< T > &other) const
 
vector2d< T > operator- (const T v) const
 
vector2d< T > & operator-= (const vector2d< T > &other)
 
vector2d< T > & operator-= (const T v)
 
vector2d< T > & operator-= (const dimension2d< T > &other)
 
vector2d< T > operator/ (const vector2d< T > &other) const
 
vector2d< T > operator/ (const T v) const
 
vector2d< T > & operator/= (const vector2d< T > &other)
 
vector2d< T > & operator/= (const T v)
 
bool operator< (const vector2d< T > &other) const
 sort in order X, Y. Difference must be above rounding tolerance. More...
 
bool operator<= (const vector2d< T > &other) const
 sort in order X, Y. Equality with rounding tolerance. More...
 
vector2d< T > & operator= (const vector2d< T > &other)
 
vector2d< T > & operator= (const dimension2d< T > &other)
 
bool operator== (const vector2d< T > &other) const
 
bool operator> (const vector2d< T > &other) const
 sort in order X, Y. Difference must be above rounding tolerance. More...
 
bool operator>= (const vector2d< T > &other) const
 sort in order X, Y. Equality with rounding tolerance. More...
 
vector2d< T > & rotateBy (f64 degrees, const vector2d< T > &center=vector2d< T >())
 rotates the point anticlockwise around a center by an amount of degrees. More...
 
vector2d< T > & set (T nx, T ny)
 
vector2d< T > & set (const vector2d< T > &p)
 

Public Attributes

X
 X coordinate of vector. More...
 
Y
 Y coordinate of vector. More...
 

Detailed Description

template<class T>
class irr::core::vector2d< T >

2d vector template class with lots of operators and methods.

As of Irrlicht 1.6, this class supersedes position2d, which should be considered deprecated.

Definition at line 16 of file dimension2d.h.

Constructor & Destructor Documentation

◆ vector2d() [1/5]

template<class T>
irr::core::vector2d< T >::vector2d ( )
inline

Default constructor (null vector)

Definition at line 25 of file vector2d.h.

◆ vector2d() [2/5]

template<class T>
irr::core::vector2d< T >::vector2d ( nx,
ny 
)
inline

Constructor with two different values.

Definition at line 27 of file vector2d.h.

◆ vector2d() [3/5]

template<class T>
irr::core::vector2d< T >::vector2d ( n)
inlineexplicit

Constructor with the same value for both members.

Definition at line 29 of file vector2d.h.

◆ vector2d() [4/5]

template<class T>
irr::core::vector2d< T >::vector2d ( const vector2d< T > &  other)
inline

Copy constructor.

Definition at line 31 of file vector2d.h.

◆ vector2d() [5/5]

template<class T>
irr::core::vector2d< T >::vector2d ( const dimension2d< T > &  other)
inline

Definition at line 33 of file vector2d.h.

Member Function Documentation

◆ areClockwise()

template<class T>
bool irr::core::vector2d< T >::areClockwise ( const vector2d< T > &  b,
const vector2d< T > &  c 
) const
inline

Returns true if points (a,b,c) are clockwise on the X,Y plane

Definition at line 351 of file vector2d.h.

◆ areCounterClockwise()

template<class T>
bool irr::core::vector2d< T >::areCounterClockwise ( const vector2d< T > &  b,
const vector2d< T > &  c 
) const
inline

Returns true if points (a,b,c) are counterclockwise on the X,Y plane

Definition at line 360 of file vector2d.h.

◆ checkOrientation()

template<class T>
s32 irr::core::vector2d< T >::checkOrientation ( const vector2d< T > &  b,
const vector2d< T > &  c 
) const
inline

Test if this point and another 2 points taken as triplet are colinear, clockwise, anticlockwise. This can be used also to check winding order in triangles for 2D meshes.

Returns
0 if points are colinear, 1 if clockwise, 2 if anticlockwise

Definition at line 331 of file vector2d.h.

◆ dotProduct()

template<class T>
T irr::core::vector2d< T >::dotProduct ( const vector2d< T > &  other) const
inline

Get the dot product of this vector with another.

Parameters
otherOther vector to take dot product with.
Returns
The dot product of the two vectors.

Definition at line 125 of file vector2d.h.

Referenced by irr::core::line2d< T >::getClosestPoint().

◆ equals()

template<class T>
bool irr::core::vector2d< T >::equals ( const vector2d< T > &  other,
const T  tolerance = (T)ROUNDING_ERROR_f32 
) const
inline

Checks if this vector equals the other one.

Takes floating point rounding errors into account.

Parameters
otherVector to compare with.
toleranceEpsilon value for both - comparing X and Y.
Returns
True if the two vector are (almost) equal, else false.

Definition at line 105 of file vector2d.h.

Referenced by irr::core::vector2d< f32 >::operator!=(), and irr::core::vector2d< f32 >::operator==().

◆ getAngle()

template<class T>
f64 irr::core::vector2d< T >::getAngle ( ) const
inline

Calculates the angle of this vector in degrees in the counter trigonometric sense.

0 is to the right (3 o'clock), values increase clockwise.

Returns
Returns a value between 0 and 360.

Definition at line 223 of file vector2d.h.

◆ getAngleTrig()

template<class T>
f64 irr::core::vector2d< T >::getAngleTrig ( ) const
inline

Calculates the angle of this vector in degrees in the trigonometric sense.

0 is to the right (3 o'clock), values increase counter-clockwise. This method has been suggested by Pr3t3nd3r.

Returns
Returns a value between 0 and 360.

Definition at line 200 of file vector2d.h.

◆ getAngleWith()

template<class T>
f64 irr::core::vector2d< T >::getAngleWith ( const vector2d< T > &  b) const
inline

Calculates the angle between this vector and another one in degree.

Parameters
bOther vector to test with.
Returns
Returns a value between 0 and 90.

Definition at line 253 of file vector2d.h.

Referenced by irr::core::line2d< T >::getAngleWith().

◆ getDistanceFrom()

template<class T>
T irr::core::vector2d< T >::getDistanceFrom ( const vector2d< T > &  other) const
inline

Gets distance from another point.

Here, the vector is interpreted as a point in 2-dimensional space.

Parameters
otherOther vector to measure from.
Returns
Distance from other point.

Definition at line 148 of file vector2d.h.

◆ getDistanceFromSQ()

template<class T>
T irr::core::vector2d< T >::getDistanceFromSQ ( const vector2d< T > &  other) const
inline

Returns squared distance from another point.

Here, the vector is interpreted as a point in 2-dimensional space.

Parameters
otherOther vector to measure from.
Returns
Squared distance from other point.

Definition at line 157 of file vector2d.h.

◆ getInterpolated()

template<class T>
vector2d<T> irr::core::vector2d< T >::getInterpolated ( const vector2d< T > &  other,
f64  d 
) const
inline

Creates an interpolated vector between this vector and another vector.

Parameters
otherThe other vector to interpolate with.
dInterpolation value between 0.0f (all the other vector) and 1.0f (all this vector). Note that this is the opposite direction of interpolation to getInterpolated_quadratic()
Returns
An interpolated vector. This vector is not modified.

Definition at line 302 of file vector2d.h.

Referenced by irr::video::S3DVertex::getInterpolated(), irr::video::S3DVertex2TCoords::getInterpolated(), and irr::video::S3DVertexTangents::getInterpolated().

◆ getInterpolated_quadratic()

template<class T>
vector2d<T> irr::core::vector2d< T >::getInterpolated_quadratic ( const vector2d< T > &  v2,
const vector2d< T > &  v3,
f64  d 
) const
inline

Creates a quadratically interpolated vector between this and two other vectors.

Parameters
v2Second vector to interpolate with.
v3Third vector to interpolate with (maximum at 1.0f)
dInterpolation value between 0.0f (all this vector) and 1.0f (all the 3rd vector). Note that this is the opposite direction of interpolation to getInterpolated() and interpolate()
Returns
An interpolated vector. This vector is not modified.

Definition at line 314 of file vector2d.h.

◆ getLength()

template<class T>
T irr::core::vector2d< T >::getLength ( ) const
inline

Gets the length of the vector.

Returns
The length of the vector.

Definition at line 115 of file vector2d.h.

Referenced by irr::core::line2d< T >::getClosestPoint(), and irr::core::vector2d< f32 >::getDistanceFrom().

◆ getLengthSQ()

template<class T>
T irr::core::vector2d< T >::getLengthSQ ( ) const
inline

Get the squared length of this vector.

This is useful because it is much faster than getLength().

Returns
The squared length of the vector.

Definition at line 120 of file vector2d.h.

Referenced by irr::core::vector2d< f32 >::getDistanceFromSQ().

◆ interpolate()

template<class T>
vector2d<T>& irr::core::vector2d< T >::interpolate ( const vector2d< T > &  a,
const vector2d< T > &  b,
f64  d 
)
inline

Sets this vector to the linearly interpolated vector between a and b.

Parameters
afirst vector to interpolate with, maximum at 1.0f
bsecond vector to interpolate with, maximum at 0.0f
dInterpolation value between 0.0f (all vector b) and 1.0f (all vector a) Note that this is the opposite direction of interpolation to getInterpolated_quadratic()

Definition at line 374 of file vector2d.h.

◆ isBetweenPoints()

template<class T>
bool irr::core::vector2d< T >::isBetweenPoints ( const vector2d< T > &  begin,
const vector2d< T > &  end 
) const
inline

Returns if this vector interpreted as a point is on a line between two other points.

It is assumed that the point is on the line.

Parameters
beginBeginning vector to compare between.
endEnding vector to compare between.
Returns
True if this vector is between begin and end, false if not.

Definition at line 274 of file vector2d.h.

Referenced by irr::core::line2d< T >::isPointBetweenStartAndEnd(), irr::core::line2d< T >::isPointOnLine(), and irr::core::line2d< T >::lineIntersectSegment().

◆ nearlyParallel()

template<class T>
bool irr::core::vector2d< T >::nearlyParallel ( const vector2d< T > &  other,
const T  factor = relativeErrorFactor<T>() 
) const
inline

check if this vector is parallel to another vector

Definition at line 131 of file vector2d.h.

Referenced by irr::core::line2d< T >::nearlyParallel().

◆ normalize()

template<class T>
vector2d<T>& irr::core::vector2d< T >::normalize ( )
inline

Normalize the vector.

The null vector is left untouched.

Returns
Reference to this vector, after normalization.

Definition at line 185 of file vector2d.h.

◆ operator *() [1/2]

template<class T>
vector2d<T> irr::core::vector2d< T >::operator * ( const vector2d< T > &  other) const
inline

Definition at line 57 of file vector2d.h.

◆ operator *() [2/2]

template<class T>
vector2d<T> irr::core::vector2d< T >::operator * ( const T  v) const
inline

Definition at line 59 of file vector2d.h.

◆ operator *=() [1/2]

template<class T>
vector2d<T>& irr::core::vector2d< T >::operator *= ( const vector2d< T > &  other)
inline

Definition at line 58 of file vector2d.h.

◆ operator *=() [2/2]

template<class T>
vector2d<T>& irr::core::vector2d< T >::operator *= ( const T  v)
inline

Definition at line 60 of file vector2d.h.

◆ operator!=()

template<class T>
bool irr::core::vector2d< T >::operator!= ( const vector2d< T > &  other) const
inline

Definition at line 96 of file vector2d.h.

◆ operator+() [1/3]

template<class T>
vector2d<T> irr::core::vector2d< T >::operator+ ( const vector2d< T > &  other) const
inline

Definition at line 43 of file vector2d.h.

◆ operator+() [2/3]

template<class T>
vector2d<T> irr::core::vector2d< T >::operator+ ( const dimension2d< T > &  other) const
inline

Definition at line 44 of file vector2d.h.

◆ operator+() [3/3]

template<class T>
vector2d<T> irr::core::vector2d< T >::operator+ ( const T  v) const
inline

Definition at line 46 of file vector2d.h.

◆ operator+=() [1/3]

template<class T>
vector2d<T>& irr::core::vector2d< T >::operator+= ( const vector2d< T > &  other)
inline

Definition at line 45 of file vector2d.h.

◆ operator+=() [2/3]

template<class T>
vector2d<T>& irr::core::vector2d< T >::operator+= ( const T  v)
inline

Definition at line 47 of file vector2d.h.

◆ operator+=() [3/3]

template<class T>
vector2d<T>& irr::core::vector2d< T >::operator+= ( const dimension2d< T > &  other)
inline

Definition at line 48 of file vector2d.h.

◆ operator-() [1/4]

template<class T>
vector2d<T> irr::core::vector2d< T >::operator- ( ) const
inline

Definition at line 37 of file vector2d.h.

◆ operator-() [2/4]

template<class T>
vector2d<T> irr::core::vector2d< T >::operator- ( const vector2d< T > &  other) const
inline

Definition at line 50 of file vector2d.h.

◆ operator-() [3/4]

template<class T>
vector2d<T> irr::core::vector2d< T >::operator- ( const dimension2d< T > &  other) const
inline

Definition at line 51 of file vector2d.h.

◆ operator-() [4/4]

template<class T>
vector2d<T> irr::core::vector2d< T >::operator- ( const T  v) const
inline

Definition at line 53 of file vector2d.h.

◆ operator-=() [1/3]

template<class T>
vector2d<T>& irr::core::vector2d< T >::operator-= ( const vector2d< T > &  other)
inline

Definition at line 52 of file vector2d.h.

◆ operator-=() [2/3]

template<class T>
vector2d<T>& irr::core::vector2d< T >::operator-= ( const T  v)
inline

Definition at line 54 of file vector2d.h.

◆ operator-=() [3/3]

template<class T>
vector2d<T>& irr::core::vector2d< T >::operator-= ( const dimension2d< T > &  other)
inline

Definition at line 55 of file vector2d.h.

◆ operator/() [1/2]

template<class T>
vector2d<T> irr::core::vector2d< T >::operator/ ( const vector2d< T > &  other) const
inline

Definition at line 62 of file vector2d.h.

◆ operator/() [2/2]

template<class T>
vector2d<T> irr::core::vector2d< T >::operator/ ( const T  v) const
inline

Definition at line 64 of file vector2d.h.

◆ operator/=() [1/2]

template<class T>
vector2d<T>& irr::core::vector2d< T >::operator/= ( const vector2d< T > &  other)
inline

Definition at line 63 of file vector2d.h.

◆ operator/=() [2/2]

template<class T>
vector2d<T>& irr::core::vector2d< T >::operator/= ( const T  v)
inline

Definition at line 65 of file vector2d.h.

◆ operator<()

template<class T>
bool irr::core::vector2d< T >::operator< ( const vector2d< T > &  other) const
inline

sort in order X, Y. Difference must be above rounding tolerance.

Definition at line 82 of file vector2d.h.

◆ operator<=()

template<class T>
bool irr::core::vector2d< T >::operator<= ( const vector2d< T > &  other) const
inline

sort in order X, Y. Equality with rounding tolerance.

Definition at line 68 of file vector2d.h.

◆ operator=() [1/2]

template<class T>
vector2d<T>& irr::core::vector2d< T >::operator= ( const vector2d< T > &  other)
inline

Definition at line 39 of file vector2d.h.

◆ operator=() [2/2]

template<class T>
vector2d<T>& irr::core::vector2d< T >::operator= ( const dimension2d< T > &  other)
inline

Definition at line 41 of file vector2d.h.

◆ operator==()

template<class T>
bool irr::core::vector2d< T >::operator== ( const vector2d< T > &  other) const
inline

Definition at line 95 of file vector2d.h.

◆ operator>()

template<class T>
bool irr::core::vector2d< T >::operator> ( const vector2d< T > &  other) const
inline

sort in order X, Y. Difference must be above rounding tolerance.

Definition at line 89 of file vector2d.h.

◆ operator>=()

template<class T>
bool irr::core::vector2d< T >::operator>= ( const vector2d< T > &  other) const
inline

sort in order X, Y. Equality with rounding tolerance.

Definition at line 75 of file vector2d.h.

◆ rotateBy()

template<class T>
vector2d<T>& irr::core::vector2d< T >::rotateBy ( f64  degrees,
const vector2d< T > &  center = vector2d<T>() 
)
inline

rotates the point anticlockwise around a center by an amount of degrees.

Parameters
degreesAmount of degrees to rotate by, anticlockwise.
centerRotation center.
Returns
This vector after transformation.

Definition at line 166 of file vector2d.h.

◆ set() [1/2]

template<class T>
vector2d<T>& irr::core::vector2d< T >::set ( nx,
ny 
)
inline

Definition at line 110 of file vector2d.h.

Referenced by irr::core::vector2d< f32 >::rotateBy().

◆ set() [2/2]

template<class T>
vector2d<T>& irr::core::vector2d< T >::set ( const vector2d< T > &  p)
inline

Definition at line 111 of file vector2d.h.

Member Data Documentation

◆ X

template<class T>
T irr::core::vector2d< T >::X

X coordinate of vector.

Definition at line 382 of file vector2d.h.

Referenced by irr::core::vector2d< f32 >::areClockwise(), irr::core::vector2d< f32 >::areCounterClockwise(), irr::core::CMatrix4< T >::buildTextureTransform(), irr::core::vector2d< f32 >::checkOrientation(), irr::gui::IGUIElement::deserializeAttributes(), irr::core::vector2d< f32 >::dotProduct(), irr::core::vector2d< f32 >::equals(), irr::core::vector2d< f32 >::getAngle(), irr::core::vector2d< f32 >::getAngleTrig(), irr::core::vector2d< f32 >::getAngleWith(), irr::core::line2d< T >::getClosestPoint(), irr::core::vector2d< f32 >::getDistanceFrom(), irr::core::vector2d< f32 >::getDistanceFromSQ(), irr::core::vector2d< f32 >::getInterpolated(), irr::core::vector2d< f32 >::getInterpolated_quadratic(), irr::core::vector2d< f32 >::getLength(), irr::core::vector2d< f32 >::getLengthSQ(), irr::core::line2d< T >::getPointOrientation(), irr::core::vector2d< f32 >::interpolate(), irr::core::line2d< T >::intersectWith(), irr::core::vector2d< f32 >::isBetweenPoints(), irr::core::vector2d< f32 >::nearlyParallel(), irr::core::vector2d< f32 >::normalize(), irr::core::vector2d< f32 >::operator *(), irr::core::vector2d< f32 >::operator *=(), irr::core::vector2d< f32 >::operator+(), irr::core::vector2d< f32 >::operator+=(), irr::core::vector2d< f32 >::operator-(), irr::core::vector2d< f32 >::operator-=(), irr::core::vector2d< f32 >::operator/(), irr::core::vector2d< f32 >::operator/=(), irr::core::vector2d< f32 >::operator<(), irr::core::vector2d< f32 >::operator<=(), irr::core::vector2d< f32 >::operator=(), irr::core::vector2d< f32 >::operator>(), irr::core::vector2d< f32 >::operator>=(), irr::core::vector2d< f32 >::rotateBy(), irr::core::vector2d< f32 >::set(), and irr::gui::IGUIElement::setRelativePosition().

◆ Y

template<class T>
T irr::core::vector2d< T >::Y

Y coordinate of vector.

Definition at line 385 of file vector2d.h.

Referenced by irr::core::vector2d< f32 >::areClockwise(), irr::core::vector2d< f32 >::areCounterClockwise(), irr::core::CMatrix4< T >::buildTextureTransform(), irr::core::vector2d< f32 >::checkOrientation(), irr::gui::IGUIElement::deserializeAttributes(), irr::core::vector2d< f32 >::dotProduct(), irr::core::vector2d< f32 >::equals(), irr::core::vector2d< f32 >::getAngle(), irr::core::vector2d< f32 >::getAngleTrig(), irr::core::vector2d< f32 >::getAngleWith(), irr::core::line2d< T >::getClosestPoint(), irr::core::vector2d< f32 >::getDistanceFrom(), irr::core::vector2d< f32 >::getDistanceFromSQ(), irr::core::vector2d< f32 >::getInterpolated(), irr::core::vector2d< f32 >::getInterpolated_quadratic(), irr::core::vector2d< f32 >::getLength(), irr::core::vector2d< f32 >::getLengthSQ(), irr::core::line2d< T >::getPointOrientation(), irr::core::vector2d< f32 >::interpolate(), irr::core::line2d< T >::intersectWith(), irr::core::vector2d< f32 >::isBetweenPoints(), irr::core::vector2d< f32 >::nearlyParallel(), irr::core::vector2d< f32 >::normalize(), irr::core::vector2d< f32 >::operator *(), irr::core::vector2d< f32 >::operator *=(), irr::core::vector2d< f32 >::operator+(), irr::core::vector2d< f32 >::operator+=(), irr::core::vector2d< f32 >::operator-(), irr::core::vector2d< f32 >::operator-=(), irr::core::vector2d< f32 >::operator/(), irr::core::vector2d< f32 >::operator/=(), irr::core::vector2d< f32 >::operator<(), irr::core::vector2d< f32 >::operator<=(), irr::core::vector2d< f32 >::operator=(), irr::core::vector2d< f32 >::operator>(), irr::core::vector2d< f32 >::operator>=(), irr::core::vector2d< f32 >::rotateBy(), irr::core::vector2d< f32 >::set(), and irr::gui::IGUIElement::setRelativePosition().


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