# QVector3D#

The `QVector3D` class represents a vector or vertex in 3D space. More

New in version 4.6.

## Synopsis#

### Static functions#

Note

This documentation may contain snippets that were automatically translated from C++ to Python. We always welcome contributions to the snippet translation. If you see an issue with the translation, you can also let us know by creating a ticket on https:/bugreports.qt.io/projects/PYSIDE

## Detailed Description#

Vectors are one of the main building blocks of 3D representation and drawing. They consist of three finite floating-point coordinates, traditionally called x, y, and z.

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

class PySide6.QtGui.QVector3D#

PySide6.QtGui.QVector3D(point)

PySide6.QtGui.QVector3D(point)

PySide6.QtGui.QVector3D(vector)

PySide6.QtGui.QVector3D(vector, zpos)

PySide6.QtGui.QVector3D(vector)

PySide6.QtGui.QVector3D(xpos, ypos, zpos)

Parameters:
• ypos – float

• xpos – float

• zpos – float

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

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

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

Constructs a 3D vector from the specified 2D `vector`. The z coordinate is set to zero.

Constructs a 3D vector from the specified 2D `vector`. The z coordinate is set to `zpos`, which must be finite.

Constructs a 3D vector from the specified 4D `vector`. The w coordinate is dropped.

Constructs a vector with coordinates (`xpos`, `ypos`, `zpos`). All parameters must be finite.

PySide6.QtGui.QVector3D.__reduce__()#
Return type:

object

PySide6.QtGui.QVector3D.__repr__()#
Return type:

object

static PySide6.QtGui.QVector3D.crossProduct(v1, v2)#
Parameters:
Return type:

`PySide6.QtGui.QVector3D`

Returns the cross-product of vectors `v1` and `v2`, which is normal to the plane spanned by `v1` and `v2`. It will be zero if the two vectors are parallel.

PySide6.QtGui.QVector3D.distanceToLine(point, direction)#
Parameters:
Return type:

float

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.

PySide6.QtGui.QVector3D.distanceToPlane(plane, normal)#
Parameters:
Return type:

float

Returns the distance from this vertex to a plane defined by the vertex `plane` and a `normal` unit vector. The `normal` parameter is assumed to have been normalized to a unit vector.

The return value will be negative if the vertex is below the plane, or zero if it is on the plane.

PySide6.QtGui.QVector3D.distanceToPlane(plane1, plane2, plane3)
Parameters:
Return type:

float

Returns the distance from this vertex to a plane defined by the vertices `plane1`, `plane2` and `plane3`.

The return value will be negative if the vertex is below the plane, or zero if it is on the plane.

The two vectors that define the plane are `plane2` - `plane1` and `plane3` - `plane1`.

PySide6.QtGui.QVector3D.distanceToPoint(point)#
Parameters:
Return type:

float

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

static PySide6.QtGui.QVector3D.dotProduct(v1, v2)#
Parameters:
Return type:

float

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

PySide6.QtGui.QVector3D.isNull()#
Return type:

bool

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

PySide6.QtGui.QVector3D.length()#
Return type:

float

Returns the length of the vector from the origin.

PySide6.QtGui.QVector3D.lengthSquared()#
Return type:

float

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

static PySide6.QtGui.QVector3D.normal(v1, v2)#
Parameters:
Return type:

`PySide6.QtGui.QVector3D`

Returns the unit normal vector of a plane spanned by vectors `v1` and `v2`, which must not be parallel to one another.

Use `crossProduct()` to compute the cross-product of `v1` and `v2` if you do not need the result to be normalized to a unit vector.

static PySide6.QtGui.QVector3D.normal(v1, v2, v3)
Parameters:
Return type:

`PySide6.QtGui.QVector3D`

Returns the unit normal vector of a plane spanned by vectors `v2` - `v1` and `v3` - `v1`, which must not be parallel to one another.

Use `crossProduct()` to compute the cross-product of `v2` - `v1` and `v3` - `v1` if you do not need the result to be normalized to a unit vector.

PySide6.QtGui.QVector3D.normalize()#

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

PySide6.QtGui.QVector3D.normalized()#
Return type:

`PySide6.QtGui.QVector3D`

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.

PySide6.QtGui.QVector3D.__ne__(v2)#
Parameters:
Return type:

bool

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

PySide6.QtGui.QVector3D.__mul__(v2)#
Parameters:
Return type:

`PySide6.QtGui.QVector3D`

Returns the `QVector3D` object formed by multiplying each component of `v1` by the corresponding component of `v2`.

Note

This is not the same as the `crossProduct()` of `v1` and `v2`. (Its components add up to the dot product of `v1` and `v2`.)

PySide6.QtGui.QVector3D.__mul__(matrix)
Parameters:
Return type:

`PySide6.QtGui.QVector3D`

Note

This function is deprecated.

PySide6.QtGui.QVector3D.__mul__(matrix)
Parameters:
Return type:

`PySide6.QtGui.QVector3D`

Note

This function is deprecated.

PySide6.QtGui.QVector3D.__mul__(quaternion)
Parameters:

quaternion`PySide6.QtGui.QQuaternion`

Return type:

`PySide6.QtGui.QVector3D`

PySide6.QtGui.QVector3D.__mul__(factor)
Parameters:

factor – float

Return type:

`PySide6.QtGui.QVector3D`

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

`operator*=()`

PySide6.QtGui.QVector3D.__mul__(factor)
Parameters:

factor – float

Return type:

`PySide6.QtGui.QVector3D`

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

`operator*=()`

PySide6.QtGui.QVector3D.__imul__(vector)#
Parameters:
Return type:

`PySide6.QtGui.QVector3D`

Multiplies each component of this vector by the corresponding component in `vector` and returns a reference to this vector.

Note: this is not the same as the `crossProduct()` of this vector and `vector`. (Its components add up to the dot product of this vector and `vector`.)

`crossProduct()` `operator/=()` `operator*()`

PySide6.QtGui.QVector3D.__imul__(factor)
Parameters:

factor – float

Return type:

`PySide6.QtGui.QVector3D`

Multiplies this vector’s coordinates by the given finite `factor` and returns a reference to this vector.

`operator/=()` `operator*()`

Parameters:
Return type:

`PySide6.QtGui.QVector3D`

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

`operator+=()`

Parameters:
Return type:

`PySide6.QtGui.QVector3D`

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

`operator-=()`

PySide6.QtGui.QVector3D.__sub__()#
Return type:

`PySide6.QtGui.QVector3D`

Returns a `QVector3D` object that is formed by changing the sign of each component of the given `vector`.

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

PySide6.QtGui.QVector3D.__sub__(v2)
Parameters:
Return type:

`PySide6.QtGui.QVector3D`

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

`operator-=()`

PySide6.QtGui.QVector3D.__isub__(vector)#
Parameters:
Return type:

`PySide6.QtGui.QVector3D`

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

`operator+=()`

PySide6.QtGui.QVector3D.__div__(divisor)#
Parameters:
Return type:

`PySide6.QtGui.QVector3D`

Returns the `QVector3D` object formed by dividing each component of the given `vector` by the corresponding component of the given `divisor`.

The `divisor` must have no component that is either zero or NaN.

`operator/=()`

PySide6.QtGui.QVector3D.__div__(divisor)
Parameters:

divisor – float

Return type:

`PySide6.QtGui.QVector3D`

Returns the `QVector3D` object formed by dividing each component of the given `vector` by the given `divisor`.

The `divisor` must not be either zero or NaN.

`operator/=()`

PySide6.QtGui.QVector3D.__idiv__(vector)#
Parameters:
Return type:

`PySide6.QtGui.QVector3D`

Divides each component of this vector by the corresponding component in `vector` and returns a reference to this vector.

The `vector` must have no component that is either zero or NaN.

`operator*=()` `operator/()`

PySide6.QtGui.QVector3D.__idiv__(divisor)
Parameters:

divisor – float

Return type:

`PySide6.QtGui.QVector3D`

Divides this vector’s coordinates by the given `divisor`, and returns a reference to this vector. The `divisor` must not be either zero or NaN.

`operator*=()` `operator/()`

PySide6.QtGui.QVector3D.__eq__(v2)#
Parameters:
Return type:

bool

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

PySide6.QtGui.QVector3D.operator[](i)
Parameters:

i – int

Return type:

float

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

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

PySide6.QtGui.QVector3D.project(modelView, projection, viewport)#
Parameters:
Return type:

`PySide6.QtGui.QVector3D`

Returns the window coordinates of this vector initially in object/model coordinates using the model view matrix `modelView`, the projection matrix `projection` and the viewport dimensions `viewport`.

When transforming from clip to normalized space, a division by the w component on the vector components takes place. To prevent dividing by 0 if w equals to 0, it is set to 1.

Note

the returned y coordinates are in OpenGL orientation. OpenGL expects the bottom to be 0 whereas for Qt top is 0.

PySide6.QtGui.QVector3D.setX(x)#
Parameters:

x – float

Sets the x coordinate of this point to the given finite `x` coordinate.

PySide6.QtGui.QVector3D.setY(y)#
Parameters:

y – float

Sets the y coordinate of this point to the given finite `y` coordinate.

PySide6.QtGui.QVector3D.setZ(z)#
Parameters:

z – float

Sets the z coordinate of this point to the given finite `z` coordinate.

PySide6.QtGui.QVector3D.toPoint()#
Return type:

`PySide6.QtCore.QPoint`

Returns the `QPoint` form of this 3D vector. The z coordinate is dropped. The x and y coordinates are rounded to nearest integers.

PySide6.QtGui.QVector3D.toPointF()#
Return type:

`PySide6.QtCore.QPointF`

Returns the `QPointF` form of this 3D vector. The z coordinate is dropped.

PySide6.QtGui.QVector3D.toTuple()#
Return type:

object

PySide6.QtGui.QVector3D.toVector2D()#
Return type:

`PySide6.QtGui.QVector2D`

Returns the 2D vector form of this 3D vector, dropping the z coordinate.

PySide6.QtGui.QVector3D.toVector4D()#
Return type:

`PySide6.QtGui.QVector4D`

Returns the 4D form of this 3D vector, with the w coordinate set to zero.

PySide6.QtGui.QVector3D.unproject(modelView, projection, viewport)#
Parameters:
Return type:

`PySide6.QtGui.QVector3D`

Returns the object/model coordinates of this vector initially in window coordinates using the model view matrix `modelView`, the projection matrix `projection` and the viewport dimensions `viewport`.

When transforming from clip to normalized space, a division by the w component of the vector components takes place. To prevent dividing by 0 if w equals to 0, it is set to 1.

Note

y coordinates in `viewport` should use OpenGL orientation. OpenGL expects the bottom to be 0 whereas for Qt top is 0.

PySide6.QtGui.QVector3D.x()#
Return type:

float

Returns the x coordinate of this point.

PySide6.QtGui.QVector3D.y()#
Return type:

float

Returns the y coordinate of this point.