4#ifndef QDOUBLEVECTOR3D_P_H
5#define QDOUBLEVECTOR3D_P_H
18#ifdef QT_BUILD_LOCATION_LIB
24#include <QtCore/qmetatype.h>
31 constexpr inline QDoubleVector3D();
32 constexpr inline QDoubleVector3D(
double xpos,
double ypos,
double zpos);
33 constexpr inline QDoubleVector3D(
const QDoubleVector2D &vector);
34 constexpr inline QDoubleVector3D(
const QDoubleVector2D &vector,
double zpos);
36 inline bool isNull()
const;
38 constexpr inline double x()
const;
39 constexpr inline double y()
const;
40 constexpr inline double z()
const;
42 inline void setX(
double x);
43 inline void setY(
double y);
44 inline void setZ(
double z);
46 inline double get(
int i)
const;
47 inline void set(
int i,
double value);
49 double length()
const;
50 constexpr inline double lengthSquared()
const;
52 QDoubleVector3D normalized()
const;
55 inline QDoubleVector3D &operator+=(
const QDoubleVector3D &vector);
56 inline QDoubleVector3D &operator-=(
const QDoubleVector3D &vector);
57 inline QDoubleVector3D &operator*=(
double factor);
58 inline QDoubleVector3D &operator*=(
const QDoubleVector3D &vector);
59 inline QDoubleVector3D &operator/=(
double divisor);
61 constexpr static inline double dotProduct(
const QDoubleVector3D &v1,
const QDoubleVector3D &v2)
62 {
return v1.xp * v2.xp + v1.yp * v2.yp + v1.zp * v2.zp; }
64 constexpr static inline QDoubleVector3D crossProduct(
const QDoubleVector3D &v1,
const QDoubleVector3D &v2)
65 {
return QDoubleVector3D(v1.yp * v2.zp - v1.zp * v2.yp,
66 v1.zp * v2.xp - v1.xp * v2.zp,
67 v1.xp * v2.yp - v1.yp * v2.xp); }
69 static QDoubleVector3D normal(
const QDoubleVector3D &v1,
const QDoubleVector3D &v2);
70 static QDoubleVector3D normal
71 (
const QDoubleVector3D &v1,
const QDoubleVector3D &v2,
const QDoubleVector3D &v3);
73 double distanceToPlane(
const QDoubleVector3D &plane,
const QDoubleVector3D &normal)
const;
74 double distanceToPlane(
const QDoubleVector3D &plane1,
const QDoubleVector3D &plane2,
const QDoubleVector3D &plane3)
const;
75 double distanceToLine(
const QDoubleVector3D &point,
const QDoubleVector3D &direction)
const;
77 friend constexpr inline bool operator==(
const QDoubleVector3D &v1,
const QDoubleVector3D &v2);
78 friend constexpr inline bool operator!=(
const QDoubleVector3D &v1,
const QDoubleVector3D &v2);
79 friend constexpr inline const QDoubleVector3D operator+(
const QDoubleVector3D &v1,
const QDoubleVector3D &v2);
80 friend constexpr inline const QDoubleVector3D operator-(
const QDoubleVector3D &v1,
const QDoubleVector3D &v2);
81 friend constexpr inline const QDoubleVector3D operator*(
double factor,
const QDoubleVector3D &vector);
82 friend constexpr inline const QDoubleVector3D operator*(
const QDoubleVector3D &vector,
double factor);
83 friend constexpr inline const QDoubleVector3D operator*(
const QDoubleVector3D &v1,
const QDoubleVector3D &v2);
84 friend constexpr inline const QDoubleVector3D operator-(
const QDoubleVector3D &vector);
85 friend constexpr inline const QDoubleVector3D operator/(
const QDoubleVector3D &vector,
double divisor);
87 friend constexpr inline bool qFuzzyCompare(
const QDoubleVector3D &v1,
const QDoubleVector3D &v2);
89 constexpr inline QDoubleVector2D toVector2D()
const;
94 friend class QDoubleVector2D;
99constexpr inline QDoubleVector3D::QDoubleVector3D() : xp(0.0), yp(0.0), zp(0.0) {}
101constexpr inline QDoubleVector3D::QDoubleVector3D(
double xpos,
double ypos,
double zpos) : xp(xpos), yp(ypos), zp(zpos) {}
103constexpr inline QDoubleVector3D::QDoubleVector3D(
const QDoubleVector2D &v)
104 : xp(v.xp), yp(v.yp), zp(0.0) {}
106constexpr inline QDoubleVector3D::QDoubleVector3D(
const QDoubleVector2D &v,
double zpos)
107 : xp(v.xp), yp(v.yp), zp(zpos) {}
109inline bool QDoubleVector3D::isNull()
const
111 return qIsNull(xp) && qIsNull(yp) && qIsNull(zp);
114constexpr inline double QDoubleVector3D::x()
const {
return xp; }
115constexpr inline double QDoubleVector3D::y()
const {
return yp; }
116constexpr inline double QDoubleVector3D::z()
const {
return zp; }
118constexpr inline double QDoubleVector3D::lengthSquared()
const
119{
return xp * xp + yp * yp + zp * zp; }
122inline void QDoubleVector3D::setX(
double aX) { xp = aX; }
123inline void QDoubleVector3D::setY(
double aY) { yp = aY; }
124inline void QDoubleVector3D::setZ(
double aZ) { zp = aZ; }
126inline double QDoubleVector3D::get(
int i)
const
140inline void QDoubleVector3D::set(
int i,
double value)
157inline QDoubleVector3D &QDoubleVector3D::operator+=(
const QDoubleVector3D &vector)
165inline QDoubleVector3D &QDoubleVector3D::operator-=(
const QDoubleVector3D &vector)
173inline QDoubleVector3D &QDoubleVector3D::operator*=(
double factor)
181inline QDoubleVector3D &QDoubleVector3D::operator*=(
const QDoubleVector3D &vector)
189inline QDoubleVector3D &QDoubleVector3D::operator/=(
double divisor)
197constexpr inline bool operator==(
const QDoubleVector3D &v1,
const QDoubleVector3D &v2)
199 return v1.xp == v2.xp && v1.yp == v2.yp && v1.zp == v2.zp;
202constexpr inline bool operator!=(
const QDoubleVector3D &v1,
const QDoubleVector3D &v2)
204 return v1.xp != v2.xp || v1.yp != v2.yp || v1.zp != v2.zp;
207constexpr inline const QDoubleVector3D
operator+(
const QDoubleVector3D &v1,
const QDoubleVector3D &v2)
209 return QDoubleVector3D(v1.xp + v2.xp, v1.yp + v2.yp, v1.zp + v2.zp);
212constexpr inline const QDoubleVector3D
operator-(
const QDoubleVector3D &v1,
const QDoubleVector3D &v2)
214 return QDoubleVector3D(v1.xp - v2.xp, v1.yp - v2.yp, v1.zp - v2.zp);
217constexpr inline const QDoubleVector3D
operator*(
double factor,
const QDoubleVector3D &vector)
219 return QDoubleVector3D(vector.xp * factor, vector.yp * factor, vector.zp * factor);
222constexpr inline const QDoubleVector3D
operator*(
const QDoubleVector3D &vector,
double factor)
224 return QDoubleVector3D(vector.xp * factor, vector.yp * factor, vector.zp * factor);
227constexpr inline const QDoubleVector3D
operator*(
const QDoubleVector3D &v1,
const QDoubleVector3D &v2)
229 return QDoubleVector3D(v1.xp * v2.xp, v1.yp * v2.yp, v1.zp * v2.zp);
232constexpr inline const QDoubleVector3D
operator-(
const QDoubleVector3D &vector)
234 return QDoubleVector3D(-vector.xp, -vector.yp, -vector.zp);
237constexpr inline const QDoubleVector3D
operator/(
const QDoubleVector3D &vector,
double divisor)
239 return QDoubleVector3D(vector.xp / divisor, vector.yp / divisor, vector.zp / divisor);
242constexpr inline bool qFuzzyCompare(
const QDoubleVector3D &v1,
const QDoubleVector3D &v2)
244 return qFuzzyCompare(v1.xp, v2.xp) &&
245 qFuzzyCompare(v1.yp, v2.yp) &&
246 qFuzzyCompare(v1.zp, v2.zp);
249constexpr inline QDoubleVector2D QDoubleVector3D::toVector2D()
const
251 return QDoubleVector2D(xp, yp);
255#ifndef QT_NO_DEBUG_STREAM
256Q_POSITIONING_EXPORT
QDebug operator<<(QDebug dbg,
const QDoubleVector3D &vector);
259#ifndef QT_NO_DATASTREAM
260Q_POSITIONING_EXPORT
QDataStream &operator<<(QDataStream &,
const QDoubleVector3D &);
261Q_POSITIONING_EXPORT
QDataStream &operator>>(QDataStream &, QDoubleVector3D &);
friend bool operator==(const QByteArray::FromBase64Result &lhs, const QByteArray::FromBase64Result &rhs) noexcept
Returns true if lhs and rhs are equal, otherwise returns false.
friend bool operator!=(const QByteArray::FromBase64Result &lhs, const QByteArray::FromBase64Result &rhs) noexcept
Returns true if lhs and rhs are different, otherwise returns false.
\inmodule QtCore\reentrant
QByteArray operator+(const QByteArray &a1, const QByteArray &a2)
Q_DECLARE_TYPEINFO(QByteArrayView, Q_PRIMITIVE_TYPE)
Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters)
QDoubleMatrix4x4 operator/(const QDoubleMatrix4x4 &matrix, double divisor)
QDoubleMatrix4x4 operator*(const QDoubleMatrix4x4 &matrix, double factor)
QDoubleMatrix4x4 operator*(double factor, const QDoubleMatrix4x4 &matrix)
Q_DECLARE_TYPEINFO(QDoubleVector3D, Q_RELOCATABLE_TYPE)
constexpr const QDoubleVector3D operator*(const QDoubleVector3D &vector, double factor)
constexpr bool qFuzzyCompare(const QDoubleVector3D &v1, const QDoubleVector3D &v2)
constexpr const QDoubleVector3D operator*(double factor, const QDoubleVector3D &vector)
constexpr const QDoubleVector3D operator-(const QDoubleVector3D &v1, const QDoubleVector3D &v2)
constexpr const QDoubleVector3D operator/(const QDoubleVector3D &vector, double divisor)
constexpr bool operator!=(const QDoubleVector3D &v1, const QDoubleVector3D &v2)
constexpr const QDoubleVector3D operator-(const QDoubleVector3D &vector)
constexpr const QDoubleVector3D operator*(const QDoubleVector3D &v1, const QDoubleVector3D &v2)
constexpr bool operator==(const QDoubleVector3D &v1, const QDoubleVector3D &v2)
constexpr const QDoubleVector3D operator+(const QDoubleVector3D &v1, const QDoubleVector3D &v2)
QDebug operator<<(QDebug dbg, const QFileInfo &fi)
bool qFuzzyCompare(const QMatrix4x4 &m1, const QMatrix4x4 &m2) noexcept
QMatrix4x4 operator*(const QMatrix4x4 &m1, const QMatrix4x4 &m2)
QMatrix4x4 operator-(const QMatrix4x4 &matrix)
QMatrix4x4 operator-(const QMatrix4x4 &m1, const QMatrix4x4 &m2)
QDataStream & operator<<(QDataStream &stream, const QImage &image)
[0]
QDataStream & operator>>(QDataStream &stream, QImage &image)