Qt 4.8
|
The QVector3D class represents a vector or vertex in 3D space. More...
#include <qvector3d.h>
Public Functions | |
qreal | distanceToLine (const QVector3D &point, const QVector3D &direction) const |
Returns the distance that this vertex is from a line defined by point and the unit vector direction. More... | |
qreal | distanceToPlane (const QVector3D &plane, const QVector3D &normal) const |
Returns the distance from this vertex to a plane defined by the vertex plane and a normal unit vector. More... | |
qreal | distanceToPlane (const QVector3D &plane1, const QVector3D &plane2, const QVector3D &plane3) const |
Returns the distance from this vertex a plane defined by the vertices plane1, plane2 and plane3. More... | |
bool | isNull () const |
Returns true if the x, y, and z coordinates are set to 0. More... | |
qreal | length () const |
Returns the length of the vector from the origin. More... | |
qreal | lengthSquared () const |
Returns the squared length of the vector from the origin. More... | |
void | normalize () |
Normalizes the currect vector in place. More... | |
QVector3D | normalized () const |
Returns the normalized unit vector form of this vector. More... | |
operator QVariant () const | |
Returns the 3D vector as a QVariant. More... | |
QVector3D & | operator*= (qreal factor) |
Multiplies this vector's coordinates by the given factor, and returns a reference to this vector. More... | |
QVector3D & | operator*= (const QVector3D &vector) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.Multiplies the components of this vector by the corresponding components in vector. More... | |
QVector3D & | operator+= (const QVector3D &vector) |
Adds the given vector to this vector and returns a reference to this vector. More... | |
QVector3D & | operator-= (const QVector3D &vector) |
Subtracts the given vector from this vector and returns a reference to this vector. More... | |
QVector3D & | operator/= (qreal divisor) |
Divides this vector's coordinates by the given divisor, and returns a reference to this vector. More... | |
QVector3D () | |
Constructs a null vector, i. More... | |
QVector3D (qreal xpos, qreal ypos, qreal zpos) | |
Constructs a vector with coordinates (xpos, ypos, zpos). More... | |
QVector3D (const QPoint &point) | |
Constructs a vector with x and y coordinates from a 2D point, and a z coordinate of 0. More... | |
QVector3D (const QPointF &point) | |
Constructs a vector with x and y coordinates from a 2D point, and a z coordinate of 0. More... | |
QVector3D (const QVector2D &vector) | |
Constructs a 3D vector from the specified 2D vector. More... | |
QVector3D (const QVector2D &vector, qreal zpos) | |
Constructs a 3D vector from the specified 2D vector. More... | |
QVector3D (const QVector4D &vector) | |
Constructs a 3D vector from the specified 4D vector. More... | |
void | setX (qreal x) |
Sets the x coordinate of this point to the given x coordinate. More... | |
void | setY (qreal y) |
Sets the y coordinate of this point to the given y coordinate. More... | |
void | setZ (qreal z) |
Sets the z coordinate of this point to the given z coordinate. More... | |
QPoint | toPoint () const |
Returns the QPoint form of this 3D vector. More... | |
QPointF | toPointF () const |
Returns the QPointF form of this 3D vector. More... | |
QVector2D | toVector2D () const |
Returns the 2D vector form of this 3D vector, dropping the z coordinate. More... | |
QVector4D | toVector4D () const |
Returns the 4D form of this 3D vector, with the w coordinate set to zero. More... | |
qreal | x () const |
Returns the x coordinate of this point. More... | |
qreal | y () const |
Returns the y coordinate of this point. More... | |
qreal | z () const |
Returns the z coordinate of this point. More... | |
Static Public Functions | |
static QVector3D | crossProduct (const QVector3D &v1, const QVector3D &v2) |
Returns the cross-product of vectors v1 and v2, which corresponds to the normal vector of a plane defined by v1 and v2. More... | |
static qreal | dotProduct (const QVector3D &v1, const QVector3D &v2) |
Returns the dot product of v1 and v2. More... | |
static QVector3D | normal (const QVector3D &v1, const QVector3D &v2) |
Returns the normal vector of a plane defined by vectors v1 and v2, normalized to be a unit vector. More... | |
static QVector3D | normal (const QVector3D &v1, const QVector3D &v2, const QVector3D &v3) |
Returns the normal vector of a plane defined by vectors v2 - v1 and v3 - v1, normalized to be a unit vector. More... | |
Private Functions | |
QVector3D (float xpos, float ypos, float zpos, int dummy) | |
Properties | |
float | xp |
float | yp |
float | zp |
Friends | |
bool | operator!= (const QVector3D &v1, const QVector3D &v2) |
Returns true if v1 is not equal to v2; otherwise returns false. More... | |
const QVector3D | operator* (qreal factor, const QVector3D &vector) |
const QVector3D | operator* (const QVector3D &vector, qreal factor) |
const QVector3D | operator* (const QVector3D &v1, const QVector3D &v2) |
QVector3D | operator* (const QVector3D &vector, const QMatrix4x4 &matrix) |
QVector3D | operator* (const QMatrix4x4 &matrix, const QVector3D &vector) |
const QVector3D | operator+ (const QVector3D &v1, const QVector3D &v2) |
Returns a QVector3D object that is the sum of the given vectors, v1 and v2; each component is added separately. More... | |
const QVector3D | operator- (const QVector3D &v1, const QVector3D &v2) |
Returns a QVector3D object that is formed by subtracting v2 from v1; each component is subtracted separately. More... | |
const QVector3D | operator- (const QVector3D &vector) |
Returns a QVector3D object that is formed by changing the sign of all three components of the given vector. More... | |
const QVector3D | operator/ (const QVector3D &vector, qreal divisor) |
Returns the QVector3D object formed by dividing all three components of the given vector by the given divisor. More... | |
bool | operator== (const QVector3D &v1, const QVector3D &v2) |
Returns true if v1 is equal to v2; otherwise returns false. More... | |
bool | qFuzzyCompare (const QVector3D &v1, const QVector3D &v2) |
Returns true if v1 and v2 are equal, allowing for a small fuzziness factor for floating-point comparisons; false otherwise. More... | |
class | QVector2D |
class | QVector4D |
Related Functions | |
(Note that these are not member functions.) | |
QDataStream & | operator<< (QDataStream &stream, const QVector3D &vector) |
Writes the given vector to the given stream and returns a reference to the stream. More... | |
QDataStream & | operator>> (QDataStream &stream, QVector3D &vector) |
Reads a 3D vector from the given stream into the given vector and returns a reference to the stream. More... | |
The QVector3D class represents a vector or vertex in 3D space.
Vectors are one of the main building blocks of 3D representation and drawing. They consist of three 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.
Note: By design values in the QVector3D instance are stored as float
. This means that on platforms where the qreal
arguments to QVector3D functions are represented by double
values, it is possible to lose precision.
Definition at line 60 of file qvector3d.h.
|
inline |
Constructs a null vector, i.
e. with coordinates (0, 0, 0).
Definition at line 146 of file qvector3d.h.
Referenced by crossProduct(), normalized(), operator*(), operator+(), operator-(), and operator/().
Constructs a vector with coordinates (xpos, ypos, zpos).
Definition at line 148 of file qvector3d.h.
|
inlineexplicit |
Constructs a vector with x and y coordinates from a 2D point, and a z coordinate of 0.
Definition at line 152 of file qvector3d.h.
|
inlineexplicit |
Constructs a vector with x and y coordinates from a 2D point, and a z coordinate of 0.
Definition at line 154 of file qvector3d.h.
QVector3D::QVector3D | ( | const QVector2D & | vector | ) |
Constructs a 3D vector from the specified 2D vector.
The z coordinate is set to zero.
Definition at line 123 of file qvector3d.cpp.
Constructs a 3D vector from the specified 2D vector.
The z coordinate is set to zpos.
Definition at line 136 of file qvector3d.cpp.
|
explicit |
Constructs a 3D vector from the specified 4D vector.
The w coordinate is dropped.
Definition at line 153 of file qvector3d.cpp.
|
inlineprivate |
Definition at line 150 of file qvector3d.h.
Returns the cross-product of vectors v1 and v2, which corresponds to the normal vector of a plane defined by v1 and v2.
Definition at line 352 of file qvector3d.cpp.
Referenced by QMatrix4x4::lookAt(), and normal().
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.
Definition at line 444 of file qvector3d.cpp.
Referenced by distanceToPlane().
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.
Definition at line 405 of file qvector3d.cpp.
Referenced by normal().
qreal QVector3D::distanceToPlane | ( | const QVector3D & | plane1, |
const QVector3D & | plane2, | ||
const QVector3D & | plane3 | ||
) | const |
Returns the distance from this vertex a plane defined by the vertices plane1, plane2 and plane3.
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
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.
Definition at line 428 of file qvector3d.cpp.
Returns the dot product of v1 and v2.
Definition at line 341 of file qvector3d.cpp.
Referenced by distanceToLine(), and distanceToPlane().
|
inline |
Returns true if the x, y, and z coordinates are set to 0.
0, otherwise returns false.
Definition at line 156 of file qvector3d.h.
Referenced by distanceToLine().
qreal QVector3D::length | ( | ) | const |
Returns the length of the vector from the origin.
Definition at line 632 of file qvector3d.cpp.
qreal QVector3D::lengthSquared | ( | ) | const |
Returns the squared length of the vector from the origin.
This is equivalent to the dot product of the vector with itself.
Definition at line 643 of file qvector3d.cpp.
Returns the normal vector of a plane defined by vectors v1 and v2, normalized to be a unit vector.
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.
Definition at line 368 of file qvector3d.cpp.
Referenced by distanceToPlane().
|
static |
Returns the normal vector of a plane defined by vectors v2 - v1 and v3 - v1, normalized to be a unit vector.
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
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.
Definition at line 389 of file qvector3d.cpp.
void QVector3D::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.
Definition at line 267 of file qvector3d.cpp.
QVector3D QVector3D::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.
Definition at line 247 of file qvector3d.cpp.
Referenced by QQuaternion::fromAxisAndAngle(), QMatrix4x4::lookAt(), and normal().
QVector3D::operator QVariant | ( | ) | const |
Returns the 3D vector as a QVariant.
Definition at line 622 of file qvector3d.cpp.
Multiplies this vector's coordinates by the given factor, and returns a reference to this vector.
Definition at line 185 of file qvector3d.h.
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.Multiplies the components of this vector by the corresponding components in vector.
Note: this is not the same as the crossProduct() of this vector and vector.
Definition at line 193 of file qvector3d.h.
Adds the given vector to this vector and returns a reference to this vector.
Definition at line 169 of file qvector3d.h.
Subtracts the given vector from this vector and returns a reference to this vector.
Definition at line 177 of file qvector3d.h.
Divides this vector's coordinates by the given divisor, and returns a reference to this vector.
Definition at line 201 of file qvector3d.h.
|
inline |
Sets the x coordinate of this point to the given x coordinate.
Definition at line 165 of file qvector3d.h.
Referenced by operator>>(), and QDeclarativeVector3DValueType::setX().
|
inline |
Sets the y coordinate of this point to the given y coordinate.
Definition at line 166 of file qvector3d.h.
Referenced by operator>>(), and QDeclarativeVector3DValueType::setY().
|
inline |
Sets the z coordinate of this point to the given z coordinate.
Definition at line 167 of file qvector3d.h.
Referenced by operator>>(), and QDeclarativeVector3DValueType::setZ().
|
inline |
Returns the QPoint form of this 3D vector.
The z coordinate is dropped.
Definition at line 261 of file qvector3d.h.
|
inline |
Returns the QPointF form of this 3D vector.
The z coordinate is dropped.
Definition at line 266 of file qvector3d.h.
QVector2D QVector3D::toVector2D | ( | ) | const |
Returns the 2D vector form of this 3D vector, dropping the z coordinate.
Definition at line 574 of file qvector3d.cpp.
QVector4D QVector3D::toVector4D | ( | ) | const |
Returns the 4D form of this 3D vector, with the w coordinate set to zero.
Definition at line 588 of file qvector3d.cpp.
|
inline |
Returns the x coordinate of this point.
Definition at line 161 of file qvector3d.h.
Referenced by QQuaternion::fromAxisAndAngle(), QDeclarativeCompiler::genLiteralAssignment(), QMatrix4x4::lookAt(), QMatrix4x4::mapVector(), QWidgetPrivate::moveRect(), operator*(), operator<<(), operator>>(), QMatrix4x4::rotate(), QMatrix4x4::scale(), QWidgetPrivate::scrollRect(), QDeclarativeVector3DValueType::setValue(), QQuaternion::setVector(), and QMatrix4x4::translate().
|
inline |
Returns the y coordinate of this point.
Definition at line 162 of file qvector3d.h.
Referenced by QQuaternion::fromAxisAndAngle(), QDeclarativeCompiler::genLiteralAssignment(), QMatrix4x4::lookAt(), QMatrix4x4::mapVector(), operator*(), operator<<(), operator>>(), QMatrix4x4::rotate(), QMatrix4x4::scale(), QDeclarativeVector3DValueType::setValue(), QQuaternion::setVector(), and QMatrix4x4::translate().
|
inline |
Returns the z coordinate of this point.
Definition at line 163 of file qvector3d.h.
Referenced by QQuaternion::fromAxisAndAngle(), QDeclarativeCompiler::genLiteralAssignment(), QMatrix4x4::lookAt(), QMatrix4x4::mapVector(), operator*(), operator<<(), operator>>(), QMatrix4x4::rotate(), QMatrix4x4::scale(), QDeclarativeVector3DValueType::setValue(), QQuaternion::setVector(), and QMatrix4x4::translate().
Returns true if v1 is not equal to v2; otherwise returns false.
This operator uses an exact floating-point comparison.
Definition at line 214 of file qvector3d.h.
Returns a copy of the given vector, multiplied by the given factor.
Definition at line 229 of file qvector3d.h.
Returns a copy of the given vector, multiplied by the given factor.
Definition at line 234 of file qvector3d.h.
Multiplies the components of v1 by the corresponding components in v2.
Note: this is not the same as the crossProduct() of v1 and v2.
Definition at line 239 of file qvector3d.h.
|
friend |
Definition at line 606 of file qmatrix4x4.h.
|
friend |
Definition at line 631 of file qmatrix4x4.h.
Returns a QVector3D object that is the sum of the given vectors, v1 and v2; each component is added separately.
Definition at line 219 of file qvector3d.h.
Returns a QVector3D object that is formed by subtracting v2 from v1; each component is subtracted separately.
Definition at line 224 of file qvector3d.h.
Returns a QVector3D object that is formed by changing the sign of all three components of the given vector.
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Equivalent to {QVector3D(0,0,0)
- vector}.
Definition at line 244 of file qvector3d.h.
Returns the QVector3D object formed by dividing all three components of the given vector by the given divisor.
Definition at line 249 of file qvector3d.h.
|
related |
Writes the given vector to the given stream and returns a reference to the stream.
Definition at line 674 of file qvector3d.cpp.
Referenced by toPointF().
Returns true if v1 is equal to v2; otherwise returns false.
This operator uses an exact floating-point comparison.
Definition at line 209 of file qvector3d.h.
|
related |
Reads a 3D vector from the given stream into the given vector and returns a reference to the stream.
Definition at line 694 of file qvector3d.cpp.
Referenced by toPointF().
Returns true if v1 and v2 are equal, allowing for a small fuzziness factor for floating-point comparisons; false otherwise.
Definition at line 254 of file qvector3d.h.
Referenced by qFuzzyCompare().
Definition at line 136 of file qvector3d.h.
Referenced by toVector2D().
Definition at line 137 of file qvector3d.h.
Referenced by toVector4D().
|
private |
Definition at line 132 of file qvector3d.h.
Referenced by crossProduct(), dotProduct(), isNull(), length(), lengthSquared(), normalize(), normalized(), operator!=(), operator*(), operator*=(), operator+(), operator+=(), operator-(), operator-=(), operator/(), operator/=(), operator==(), qFuzzyCompare(), QVector2D::QVector2D(), QVector3D(), QVector4D::QVector4D(), setX(), toPoint(), toPointF(), toVector2D(), toVector4D(), and x().
|
private |
Definition at line 132 of file qvector3d.h.
Referenced by crossProduct(), dotProduct(), isNull(), length(), lengthSquared(), normalize(), normalized(), operator!=(), operator*(), operator*=(), operator+(), operator+=(), operator-(), operator-=(), operator/(), operator/=(), operator==(), qFuzzyCompare(), QVector2D::QVector2D(), QVector3D(), QVector4D::QVector4D(), setY(), toPoint(), toPointF(), toVector2D(), toVector4D(), and y().
|
private |
Definition at line 132 of file qvector3d.h.
Referenced by crossProduct(), dotProduct(), isNull(), length(), lengthSquared(), normalize(), normalized(), operator!=(), operator*(), operator*=(), operator+(), operator+=(), operator-(), operator-=(), operator/(), operator/=(), operator==(), qFuzzyCompare(), QVector3D(), QVector4D::QVector4D(), setZ(), toVector4D(), and z().