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)
 
dotProduct (const vector2d< T > &other) const
 Get the dot product of this vector with another. More...
 
bool equals (const vector2d< T > &other) 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...
 
vector2d< T > & normalize ()
 Normalize the vector. More...
 
bool operator!= (const vector2d< T > &other) const
 
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)
 
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 supercedes 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

§ 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 124 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
inline

Checks if this vector equals the other one.

Takes floating point rounding errors into account.

Parameters
otherVector to compare with.
Returns
True if the two vector are (almost) equal, else false.

Definition at line 104 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 208 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 185 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 238 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 133 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 142 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 278 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 290 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 114 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 119 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 308 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 259 of file vector2d.h.

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

§ 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 170 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/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+() [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 151 of file vector2d.h.

§ set() [1/2]

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

Definition at line 109 of file vector2d.h.

§ set() [2/2]

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

Definition at line 110 of file vector2d.h.

Member Data Documentation

§ X

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

X coordinate of vector.

Definition at line 316 of file vector2d.h.

Referenced by irr::core::CMatrix4< T >::buildTextureTransform(), 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 >::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 319 of file vector2d.h.

Referenced by irr::core::CMatrix4< T >::buildTextureTransform(), 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 >::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: