4#ifndef QDOUBLEVECTOR3D_P_H
5#define QDOUBLEVECTOR3D_P_H
18#ifdef QT_BUILD_LOCATION_LIB
24#include <QtCore/qmetatype.h>
31 Q_DECL_CONSTEXPR
inline QDoubleVector3D();
32 Q_DECL_CONSTEXPR
inline QDoubleVector3D(
double xpos,
double ypos,
double zpos);
33 Q_DECL_CONSTEXPR
inline QDoubleVector3D(
const QDoubleVector2D &vector);
34 Q_DECL_CONSTEXPR
inline QDoubleVector3D(
const QDoubleVector2D &vector,
double zpos);
36 inline bool isNull()
const;
38 Q_DECL_CONSTEXPR
inline double x()
const;
39 Q_DECL_CONSTEXPR
inline double y()
const;
40 Q_DECL_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 Q_DECL_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 Q_DECL_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 Q_DECL_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 Q_DECL_CONSTEXPR
inline bool operator==(
const QDoubleVector3D &v1,
const QDoubleVector3D &v2);
78 friend Q_DECL_CONSTEXPR
inline bool operator!=(
const QDoubleVector3D &v1,
const QDoubleVector3D &v2);
79 friend Q_DECL_CONSTEXPR
inline const QDoubleVector3D operator+(
const QDoubleVector3D &v1,
const QDoubleVector3D &v2);
80 friend Q_DECL_CONSTEXPR
inline const QDoubleVector3D operator-(
const QDoubleVector3D &v1,
const QDoubleVector3D &v2);
81 friend Q_DECL_CONSTEXPR
inline const QDoubleVector3D operator*(
double factor,
const QDoubleVector3D &vector);
82 friend Q_DECL_CONSTEXPR
inline const QDoubleVector3D operator*(
const QDoubleVector3D &vector,
double factor);
83 friend Q_DECL_CONSTEXPR
inline const QDoubleVector3D operator*(
const QDoubleVector3D &v1,
const QDoubleVector3D &v2);
84 friend Q_DECL_CONSTEXPR
inline const QDoubleVector3D operator-(
const QDoubleVector3D &vector);
85 friend Q_DECL_CONSTEXPR
inline const QDoubleVector3D operator/(
const QDoubleVector3D &vector,
double divisor);
87 friend Q_DECL_CONSTEXPR
inline bool qFuzzyCompare(
const QDoubleVector3D &v1,
const QDoubleVector3D &v2);
89 Q_DECL_CONSTEXPR
inline QDoubleVector2D toVector2D()
const;
94 friend class QDoubleVector2D;
99Q_DECL_CONSTEXPR
inline QDoubleVector3D::QDoubleVector3D() : xp(0.0), yp(0.0), zp(0.0) {}
101Q_DECL_CONSTEXPR
inline QDoubleVector3D::QDoubleVector3D(
double xpos,
double ypos,
double zpos) : xp(xpos), yp(ypos), zp(zpos) {}
103Q_DECL_CONSTEXPR
inline QDoubleVector3D::QDoubleVector3D(
const QDoubleVector2D &v)
104 : xp(v.xp), yp(v.yp), zp(0.0) {}
106Q_DECL_CONSTEXPR
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);
114Q_DECL_CONSTEXPR
inline double QDoubleVector3D::x()
const {
return xp; }
115Q_DECL_CONSTEXPR
inline double QDoubleVector3D::y()
const {
return yp; }
116Q_DECL_CONSTEXPR
inline double QDoubleVector3D::z()
const {
return zp; }
118Q_DECL_CONSTEXPR
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)
199 return v1.xp == v2.xp && v1.yp == v2.yp && v1.zp == v2.zp;
204 return v1.xp != v2.xp || v1.yp != v2.yp || v1.zp != v2.zp;
209 return QDoubleVector3D(v1.xp + v2.xp, v1.yp + v2.yp, v1.zp + v2.zp);
214 return QDoubleVector3D(v1.xp - v2.xp, v1.yp - v2.yp, v1.zp - v2.zp);
219 return QDoubleVector3D(vector.xp * factor, vector.yp * factor, vector.zp * factor);
224 return QDoubleVector3D(vector.xp * factor, vector.yp * factor, vector.zp * factor);
229 return QDoubleVector3D(v1.xp * v2.xp, v1.yp * v2.yp, v1.zp * v2.zp);
234 return QDoubleVector3D(-vector.xp, -vector.yp, -vector.zp);
239 return QDoubleVector3D(vector.xp / divisor, vector.yp / divisor, vector.zp / divisor);
244 return qFuzzyCompare(v1.xp, v2.xp) &&
245 qFuzzyCompare(v1.yp, v2.yp) &&
246 qFuzzyCompare(v1.zp, v2.zp);
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
Combined button and popup list for selecting options.
Q_DECLARE_TYPEINFO(QByteArrayView, Q_PRIMITIVE_TYPE)
Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters)
Q_DECLARE_TYPEINFO(QDoubleVector3D, Q_RELOCATABLE_TYPE)
Q_DECL_CONSTEXPR bool qFuzzyCompare(const QDoubleVector3D &v1, const QDoubleVector3D &v2)
Q_DECL_CONSTEXPR bool operator==(const QDoubleVector3D &v1, const QDoubleVector3D &v2)
Q_DECL_CONSTEXPR bool operator!=(const QDoubleVector3D &v1, const QDoubleVector3D &v2)
QDebug operator<<(QDebug dbg, const QFileInfo &fi)
constexpr bool qFuzzyCompare(const QQuaternion &q1, const QQuaternion &q2) noexcept