# QVector4D Class Reference

The QVector4D class represents a vector or vertex in 4D space. More...

` #include <QVector4D>`

This class was introduced in Qt 4.6.

## Public Functions

QVector4D () | |

QVector4D ( qreal xpos, qreal ypos, qreal zpos, qreal wpos ) | |

QVector4D ( const QPoint & point ) | |

QVector4D ( const QPointF & point ) | |

QVector4D ( const QVector2D & vector ) | |

QVector4D ( const QVector2D & vector, qreal zpos, qreal wpos ) | |

QVector4D ( const QVector3D & vector ) | |

QVector4D ( const QVector3D & vector, qreal wpos ) | |

bool | isNull () const |

qreal | length () const |

qreal | lengthSquared () const |

void | normalize () |

QVector4D | normalized () const |

void | setW ( qreal w ) |

void | setX ( qreal x ) |

void | setY ( qreal y ) |

void | setZ ( qreal z ) |

QPoint | toPoint () const |

QPointF | toPointF () const |

QVector2D | toVector2D () const |

QVector2D | toVector2DAffine () const |

QVector3D | toVector3D () const |

QVector3D | toVector3DAffine () const |

qreal | w () const |

qreal | x () const |

qreal | y () const |

qreal | z () const |

operator QVariant () const | |

QVector4D & | operator*= ( qreal factor ) |

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

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

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

QVector4D & | operator/= ( qreal divisor ) |

## Static Public Members

qreal | dotProduct ( const QVector4D & v1, const QVector4D & v2 ) |

## Related Non-Members

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

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

const QVector4D | operator* ( qreal factor, const QVector4D & vector ) |

const QVector4D | operator* ( const QVector4D & vector, qreal factor ) |

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

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

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

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

const QVector4D | operator/ ( const QVector4D & vector, qreal divisor ) |

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

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

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

## Detailed Description

The QVector4D class represents a vector or vertex in 4D space.

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

**Note:** By design values in the QVector4D instance are stored as `float`. This means that on platforms where the `qreal` arguments to QVector4D functions are represented by `double` values, it is possible to lose precision.

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

## Member Function Documentation

### QVector4D::QVector4D ()

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

### QVector4D::QVector4D ( qreal *xpos*, qreal *ypos*, qreal *zpos*, qreal *wpos* )

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

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

Constructs a vector with x and y coordinates from a 2D *point*, and z and w coordinates of 0.

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

Constructs a vector with x and y coordinates from a 2D *point*, and z and w coordinates of 0.

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

Constructs a 4D vector from the specified 2D *vector*. The z and w coordinates are set to zero.

**See also **toVector2D().

### QVector4D::QVector4D ( const QVector2D & *vector*, qreal *zpos*, qreal *wpos* )

Constructs a 4D vector from the specified 2D *vector*. The z and w coordinates are set to *zpos* and *wpos* respectively.

**See also **toVector2D().

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

Constructs a 4D vector from the specified 3D *vector*. The w coordinate is set to zero.

**See also **toVector3D().

### QVector4D::QVector4D ( const QVector3D & *vector*, qreal *wpos* )

Constructs a 4D vector from the specified 3D *vector*. The w coordinate is set to *wpos*.

**See also **toVector3D().

### qreal QVector4D::dotProduct ( const QVector4D & *v1*, const QVector4D & *v2* )` [static]`

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

### bool QVector4D::isNull () const

Returns true if the x, y, z, and w coordinates are set to 0.0, otherwise returns false.

### qreal QVector4D::length () const

Returns the length of the vector from the origin.

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

### qreal QVector4D::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 QVector4D::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().

### QVector4D QVector4D::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 QVector4D::setW ( qreal *w* )

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

**See also **w(), setX(), setY(), and setZ().

### void QVector4D::setX ( qreal *x* )

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

**See also **x(), setY(), setZ(), and setW().

### void QVector4D::setY ( qreal *y* )

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

**See also **y(), setX(), setZ(), and setW().

### void QVector4D::setZ ( qreal *z* )

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

**See also **z(), setX(), setY(), and setW().

### QPoint QVector4D::toPoint () const

Returns the QPoint form of this 4D vector. The z and w coordinates are dropped.

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

### QPointF QVector4D::toPointF () const

Returns the QPointF form of this 4D vector. The z and w coordinates are dropped.

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

### QVector2D QVector4D::toVector2D () const

Returns the 2D vector form of this 4D vector, dropping the z and w coordinates.

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

### QVector2D QVector4D::toVector2DAffine () const

Returns the 2D vector form of this 4D vector, dividing the x and y coordinates by the w coordinate and dropping the z coordinate. Returns a null vector if w is zero.

**See also **toVector2D(), toVector3DAffine(), and toPoint().

### QVector3D QVector4D::toVector3D () const

Returns the 3D vector form of this 4D vector, dropping the w coordinate.

**See also **toVector3DAffine(), toVector2D(), and toPoint().

### QVector3D QVector4D::toVector3DAffine () const

Returns the 3D vector form of this 4D vector, dividing the x, y, and z coordinates by the w coordinate. Returns a null vector if w is zero.

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

### qreal QVector4D::w () const

Returns the w coordinate of this point.

**See also **setW(), x(), y(), and z().

### qreal QVector4D::x () const

Returns the x coordinate of this point.

**See also **setX(), y(), z(), and w().

### qreal QVector4D::y () const

Returns the y coordinate of this point.

**See also **setY(), x(), z(), and w().

### qreal QVector4D::z () const

Returns the z coordinate of this point.

**See also **setZ(), x(), y(), and w().

### QVector4D::operator QVariant () const

Returns the 4D vector as a QVariant.

### QVector4D & QVector4D::operator*= ( qreal *factor* )

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

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

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

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

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

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

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

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

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

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

### QVector4D & QVector4D::operator/= ( qreal *divisor* )

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

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

## Related Non-Members

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

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

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

Returns true if *v1* is not equal to *v2*; otherwise returns false. This operator uses an exact floating-point comparison.

### const QVector4D operator* ( qreal *factor*, const QVector4D & *vector* )

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

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

### const QVector4D operator* ( const QVector4D & *vector*, qreal *factor* )

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

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

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

Returns the vector consisting of the multiplication of the components from *v1* and *v2*.

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

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

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

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

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

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

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

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

This is an overloaded function.

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

Equivalent to `QVector4D(0,0,0,0) - vector`.

### const QVector4D operator/ ( const QVector4D & *vector*, qreal *divisor* )

Returns the QVector4D object formed by dividing all four components of the given *vector* by the given *divisor*.

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

### QDataStream & operator<< ( QDataStream & *stream*, const QVector4D & *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 QVector4D & *v1*, const QVector4D & *v2* )

Returns true if *v1* is equal to *v2*; otherwise returns false. This operator uses an exact floating-point comparison.

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

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

**See also **Serializing Qt Data Types.

## No notes