# QVector2D Class

The QVector2D class represents a vector or vertex in 2D space. More...

Header: | #include <QVector2D> |

qmake: | QT += gui |

Since: | Qt 4.6 |

This class was introduced in Qt 4.6.

## Public Functions

QVector2D(const QVector4D &vector) | |

QVector2D(const QVector3D &vector) | |

QVector2D(const QPointF &point) | |

QVector2D(const QPoint &point) | |

QVector2D(float xpos, float ypos) | |

QVector2D() | |

float | distanceToLine(const QVector2D &point, const QVector2D &direction) const |

float | distanceToPoint(const QVector2D &point) const |

bool | isNull() const |

float | length() const |

float | lengthSquared() const |

void | normalize() |

QVector2D | normalized() const |

void | setX(float x) |

void | setY(float y) |

QPoint | toPoint() const |

QPointF | toPointF() const |

QVector3D | toVector3D() const |

QVector4D | toVector4D() const |

float | x() const |

float | y() const |

QVariant | operator QVariant() const |

QVector2D & | operator*=(float factor) |

QVector2D & | operator*=(const QVector2D &vector) |

QVector2D & | operator+=(const QVector2D &vector) |

QVector2D & | operator-=(const QVector2D &vector) |

QVector2D & | operator/=(float divisor) |

QVector2D & | operator/=(const QVector2D &vector) |

float & | operator[](int i) |

float | operator[](int i) const |

## Static Public Members

float | dotProduct(const QVector2D &v1, const QVector2D &v2) |

## Related Non-Members

bool | qFuzzyCompare(const QVector2D &v1, const QVector2D &v2) |

bool | operator!=(const QVector2D &v1, const QVector2D &v2) |

const QVector2D | operator*(float factor, const QVector2D &vector) |

const QVector2D | operator*(const QVector2D &vector, float factor) |

const QVector2D | operator*(const QVector2D &v1, const QVector2D &v2) |

const QVector2D | operator+(const QVector2D &v1, const QVector2D &v2) |

const QVector2D | operator-(const QVector2D &v1, const QVector2D &v2) |

const QVector2D | operator-(const QVector2D &vector) |

const QVector2D | operator/(const QVector2D &vector, float divisor) |

const QVector2D | operator/(const QVector2D &vector, const QVector2D &divisor) |

QDataStream & | operator<<(QDataStream &stream, const QVector2D &vector) |

bool | operator==(const QVector2D &v1, const QVector2D &v2) |

QDataStream & | operator>>(QDataStream &stream, QVector2D &vector) |

## Detailed Description

The QVector2D class can also be used to represent vertices in 2D space. We therefore do not need to provide a separate vertex class.

**See also **QVector3D, QVector4D, and QQuaternion.

## Member Function Documentation

### QVector2D::QVector2D(const QVector4D &*vector*)

Constructs a vector with x and y coordinates from a 3D *vector*. The z and w coordinates of *vector* are dropped.

**See also **toVector4D().

### QVector2D::QVector2D(const QVector3D &*vector*)

Constructs a vector with x and y coordinates from a 3D *vector*. The z coordinate of *vector* is dropped.

**See also **toVector3D().

### QVector2D::QVector2D(const QPointF &*point*)

Constructs a vector with x and y coordinates from a 2D *point*.

### QVector2D::QVector2D(const QPoint &*point*)

Constructs a vector with x and y coordinates from a 2D *point*.

### QVector2D::QVector2D(float *xpos*, float *ypos*)

Constructs a vector with coordinates (*xpos*, *ypos*).

### QVector2D::QVector2D()

Constructs a null vector, i.e. with coordinates (0, 0).

### float QVector2D::distanceToLine(const QVector2D &*point*, const QVector2D &*direction*) const

Returns the distance that this vertex is from a line defined by *point* and the unit vector *direction*.

If *direction* is a null vector, then it does not define a line. In that case, the distance from *point* to this vertex is returned.

This function was introduced in Qt 5.1.

**See also **distanceToPoint().

### float QVector2D::distanceToPoint(const QVector2D &*point*) const

Returns the distance from this vertex to a point defined by the vertex *point*.

This function was introduced in Qt 5.1.

**See also **distanceToLine().

`[static] `

float QVector2D::dotProduct(const QVector2D &*v1*, const QVector2D &*v2*)

Returns the dot product of *v1* and *v2*.

### bool QVector2D::isNull() const

Returns `true`

if the x and y coordinates are set to 0.0, otherwise returns `false`

.

### float QVector2D::length() const

Returns the length of the vector from the origin.

**See also **lengthSquared() and normalized().

### float QVector2D::lengthSquared() const

Returns the squared length of the vector from the origin. This is equivalent to the dot product of the vector with itself.

**See also **length() and dotProduct().

### void QVector2D::normalize()

Normalizes the currect vector in place. Nothing happens if this vector is a null vector or the length of the vector is very close to 1.

**See also **length() and normalized().

### QVector2D QVector2D::normalized() const

Returns the normalized unit vector form of this vector.

If this vector is null, then a null vector is returned. If the length of the vector is very close to 1, then the vector will be returned as-is. Otherwise the normalized form of the vector of length 1 will be returned.

**See also **length() and normalize().

### void QVector2D::setX(float *x*)

Sets the x coordinate of this point to the given *x* coordinate.

### void QVector2D::setY(float *y*)

Sets the y coordinate of this point to the given *y* coordinate.

### QPoint QVector2D::toPoint() const

Returns the QPoint form of this 2D vector.

**See also **toPointF() and toVector3D().

### QPointF QVector2D::toPointF() const

Returns the QPointF form of this 2D vector.

**See also **toPoint() and toVector3D().

### QVector3D QVector2D::toVector3D() const

Returns the 3D form of this 2D vector, with the z coordinate set to zero.

**See also **toVector4D() and toPoint().

### QVector4D QVector2D::toVector4D() const

Returns the 4D form of this 2D vector, with the z and w coordinates set to zero.

**See also **toVector3D() and toPoint().

### float QVector2D::x() const

Returns the x coordinate of this point.

### float QVector2D::y() const

Returns the y coordinate of this point.

### QVariant QVector2D::operator QVariant() const

Returns the 2D vector as a QVariant.

### QVector2D &QVector2D::operator*=(float *factor*)

Multiplies this vector's coordinates by the given *factor*, and returns a reference to this vector.

**See also **operator/=().

### QVector2D &QVector2D::operator*=(const QVector2D &*vector*)

Multiplies the components of this vector by the corresponding components in *vector*.

### QVector2D &QVector2D::operator+=(const QVector2D &*vector*)

Adds the given *vector* to this vector and returns a reference to this vector.

**See also **operator-=().

### QVector2D &QVector2D::operator-=(const QVector2D &*vector*)

Subtracts the given *vector* from this vector and returns a reference to this vector.

**See also **operator+=().

### QVector2D &QVector2D::operator/=(float *divisor*)

Divides this vector's coordinates by the given *divisor*, and returns a reference to this vector.

**See also **operator*=().

### QVector2D &QVector2D::operator/=(const QVector2D &*vector*)

Divides the components of this vector by the corresponding components in *vector*.

This function was introduced in Qt 5.5.

**See also **operator*=().

### float &QVector2D::operator[](int *i*)

Returns the component of the vector at index position *i* as a modifiable reference.

*i* must be a valid index position in the vector (i.e., 0 <= *i* < 2).

This function was introduced in Qt 5.2.

### float QVector2D::operator[](int *i*) const

Returns the component of the vector at index position *i*.

*i* must be a valid index position in the vector (i.e., 0 <= *i* < 2).

This function was introduced in Qt 5.2.

## Related Non-Members

### bool qFuzzyCompare(const QVector2D &*v1*, const QVector2D &*v2*)

Returns `true`

if *v1* and *v2* are equal, allowing for a small fuzziness factor for floating-point comparisons; false otherwise.

### bool operator!=(const QVector2D &*v1*, const QVector2D &*v2*)

Returns `true`

if *v1* is not equal to *v2*; otherwise returns `false`

. This operator uses an exact floating-point comparison.

### const QVector2D operator*(float *factor*, const QVector2D &*vector*)

Returns a copy of the given *vector*, multiplied by the given *factor*.

**See also **QVector2D::operator*=().

### const QVector2D operator*(const QVector2D &*vector*, float *factor*)

Returns a copy of the given *vector*, multiplied by the given *factor*.

**See also **QVector2D::operator*=().

### const QVector2D operator*(const QVector2D &*v1*, const QVector2D &*v2*)

Multiplies the components of *v1* by the corresponding components in *v2*.

### const QVector2D operator+(const QVector2D &*v1*, const QVector2D &*v2*)

Returns a QVector2D object that is the sum of the given vectors, *v1* and *v2*; each component is added separately.

**See also **QVector2D::operator+=().

### const QVector2D operator-(const QVector2D &*v1*, const QVector2D &*v2*)

Returns a QVector2D object that is formed by subtracting *v2* from *v1*; each component is subtracted separately.

**See also **QVector2D::operator-=().

### const QVector2D operator-(const QVector2D &*vector*)

This is an overloaded function.

Returns a QVector2D object that is formed by changing the sign of the components of the given *vector*.

Equivalent to `QVector2D(0,0) - vector`

.

### const QVector2D operator/(const QVector2D &*vector*, float *divisor*)

Returns the QVector2D object formed by dividing all three components of the given *vector* by the given *divisor*.

**See also **QVector2D::operator/=().

### const QVector2D operator/(const QVector2D &*vector*, const QVector2D &*divisor*)

Returns the QVector2D object formed by dividing components of the given *vector* by a respective components of the given *divisor*.

This function was introduced in Qt 5.5.

**See also **QVector2D::operator/=().

### QDataStream &operator<<(QDataStream &*stream*, const QVector2D &*vector*)

Writes the given *vector* to the given *stream* and returns a reference to the stream.

**See also **Serializing Qt Data Types.

### bool operator==(const QVector2D &*v1*, const QVector2D &*v2*)

Returns `true`

if *v1* is equal to *v2*; otherwise returns `false`

. This operator uses an exact floating-point comparison.

### QDataStream &operator>>(QDataStream &*stream*, QVector2D &*vector*)

Reads a 2D vector from the given *stream* into the given *vector* and returns a reference to the stream.

**See also **Serializing Qt Data Types.