modm API documentation
|
Class for handling common vector operations (2D) More...
#include <modm/math/geometry/vector2.hpp>
Public Typedefs | |
typedef GeometricTraits< T >::WideType | WideType |
typedef GeometricTraits< T >::FloatType | FloatType |
Public Member Functions | |
Vector () | |
Default-Constructor. More... | |
Vector (const T &inX, const T &inY) | |
Vector (const Vector< T, 1 > &inX, const Vector< T, 1 > &inY) | |
Vector (const T &inX, const Vector< T, 1 > &inY) | |
Vector (const Vector< T, 1 > &inX, const T &inY) | |
Vector (T inVal) | |
Vector (const Matrix< T, 2, 1 > &rhs) | |
void | setX (const T &value) |
void | setY (const T &value) |
void | set (const T &x, const T &y) |
const T & | getX () const |
const T & | getY () const |
T | getLength () const |
Calculate length of the vector. | |
WideType | getLengthSquared () const |
Calculate squared length of the vector. More... | |
float | getAngle () const |
Calculate the absolute angle. More... | |
Vector & | normalize () |
Normalize length to 1. More... | |
Vector | normalized () const |
Vector & | scale (float length) |
Scale the vector to length . | |
Vector | scaled (float length) const |
Vector & | rotate (float phi) |
Vector & | translate (const Vector &vector) |
Move the point in x and y direction. | |
WideType | getDistanceTo (const Vector &other) const |
float | getAngleTo (const Vector &other) const |
WideType | dot (const Vector &other) const |
Calculate the dot-product. More... | |
WideType | cross (const Vector &other) const |
Calculate the cross-product. More... | |
template<typename U > | |
Vector< U, 2 > | convert () const |
Convert between Point-objects with different base-types. | |
Vector | toOrthogonalVector () const |
Returns a perpendicular copy of the vector. More... | |
Vector | perpendicular () const |
Vector & | operator= (const Matrix< T, 2, 1 > &rhs) |
bool | operator== (const Vector &rhs) const |
bool | operator!= (const Vector &rhs) const |
bool | operator< (const Vector &rhs) const |
bool | operator<= (const Vector &rhs) const |
bool | operator> (const Vector &rhs) const |
bool | operator>= (const Vector &rhs) const |
const T & | operator[] (uint8_t index) const |
T & | operator[] (uint8_t index) |
T * | ptr () |
const T * | ptr () const |
Vector | operator- () const |
Vector | operator- (const Vector &rhs) const |
Vector | operator+ (const Vector &rhs) const |
T | operator* (const Vector &rhs) const |
T | operator^ (const Vector &rhs) const |
Vector | operator* (float rhs) const |
Vector | operator/ (float rhs) const |
Vector & | operator+= (const Vector &rhs) |
Vector & | operator-= (const Vector &rhs) |
Vector & | operator*= (const T &rhs) |
Vector & | operator/= (const T &rhs) |
Vector & | operator~ () |
Matrix< T, 2, 1 > & | asMatrix () |
const Matrix< T, 2, 1 > & | asMatrix () const |
Matrix< T, 1, 2 > & | asTransposedMatrix () |
const Matrix< T, 1, 2 > & | asTransposedMatrix () const |
bool | hasNan () const |
bool | hasInf () const |
Static Public Member Functions | |
static int_fast8_t | ccw (const Vector &a, const Vector &b, const Vector &c) |
Check if three points are in a counter-clock wise direction. More... | |
Public Attributes | |
T | x |
T | y |
Friends | |
class | Location2D< T > |
template<typename U > | |
IOStream & | operator<< (IOStream &os, const Vector< U, 2 > &c) |
Stream operator for modm::Vector<U, 2> | |
template<typename U > | |
Vector< U, 2 > | operator* (float scale, const Vector< U, 2 > &vector) |
Scalar multiplication. | |
Class for handling common vector operations (2D)
Operations:
Adapted from the implementation of Gaspard Petit (gaspardpetit@gmail.com) and heavily modified.
modm::Vector< T, 2 >::Vector | ( | ) |
Default-Constructor.
Creates a Vector with coordinates (0, 0).
|
static |
Check if three points are in a counter-clock wise direction.
Check if we move counter-clock wise if we move from the first point to the second and the third.
If all three points are in a line there are three possibilities: 1) strait line: third point behind the second (returns 1) 2) last point between the other two (returns 0) 3) third point before the first one (returns -1)
This definition is useful for inclusion or intersection testing.
WideType modm::Vector< T, 2 >::cross | ( | const Vector< T, 2 > & | other | ) | const |
Calculate the cross-product.
In 2D there is no clear definition of this operation.
This implementation is the most common one and will return the magnitude of the vector that would result from a regular 3D cross product of the input vectors, taking their Z values implicitly as 0 (i.e. treating the 2D space as a plane in the 3D space). The 3D cross product will be perpendicular to that plane, and thus have 0 X & Y components (thus the scalar returned is the Z value of the 3D cross product vector).
Other implementations take no arguments and returns a vector perpendicular to the input vector. This can be reached with the toOrthogonalVector() method, which returns a perpendicular copy of the vector.
WideType modm::Vector< T, 2 >::dot | ( | const Vector< T, 2 > & | other | ) | const |
Calculate the dot-product.
Also known as the scalar product.
float modm::Vector< T, 2 >::getAngle | ( | ) | const |
Calculate the absolute angle.
WideType modm::Vector< T, 2 >::getLengthSquared | ( | ) | const |
Calculate squared length of the vector.
This method is considerably faster than getLength() because it doesn't need to calculate the square root.
Vector& modm::Vector< T, 2 >::normalize | ( | ) |
Normalize length to 1.
Vector modm::Vector< T, 2 >::toOrthogonalVector | ( | ) | const |
Returns a perpendicular copy of the vector.