5#include <QtCore/qdatastream.h>
6#include <QtCore/qmath.h>
7#include <QtCore/qdebug.h>
11QDoubleVector3D QDoubleVector3D::normalized()
const
14 double len =
double(xp) *
double(xp) +
15 double(yp) *
double(yp) +
16 double(zp) *
double(zp);
17 if (qFuzzyIsNull(len - 1.0))
19 else if (!qFuzzyIsNull(len))
20 return *
this / (
double)qSqrt(len);
22 return QDoubleVector3D();
25void QDoubleVector3D::normalize()
28 double len =
double(xp) *
double(xp) +
29 double(yp) *
double(yp) +
30 double(zp) *
double(zp);
31 if (qFuzzyIsNull(len - 1.0) || qFuzzyIsNull(len))
41QDoubleVector3D QDoubleVector3D::normal(
const QDoubleVector3D &v1,
const QDoubleVector3D &v2)
43 return crossProduct(v1, v2).normalized();
46QDoubleVector3D QDoubleVector3D::normal
47 (
const QDoubleVector3D &v1,
const QDoubleVector3D &v2,
const QDoubleVector3D &v3)
49 return crossProduct((v2 - v1), (v3 - v1)).normalized();
52double QDoubleVector3D::distanceToPlane
53 (
const QDoubleVector3D &plane1,
const QDoubleVector3D &plane2,
const QDoubleVector3D &plane3)
const
55 QDoubleVector3D n = normal(plane2 - plane1, plane3 - plane1);
56 return dotProduct(*
this - plane1, n);
59double QDoubleVector3D::distanceToLine
60 (
const QDoubleVector3D &point,
const QDoubleVector3D &direction)
const
62 if (direction.isNull())
63 return (*
this - point).length();
64 QDoubleVector3D p = point + dotProduct(*
this - point, direction) * direction;
65 return (*
this - p).length();
68double QDoubleVector3D::length()
const
70 return qSqrt(xp * xp + yp * yp + zp * zp);
73#ifndef QT_NO_DEBUG_STREAM
77 QDebugStateSaver saver(dbg);
78 dbg.nospace() <<
"QDoubleVector3D("
79 << vector.x() <<
", " << vector.y() <<
", " << vector.z() <<
')';
85#ifndef QT_NO_DATASTREAM
89 stream <<
double(vector.x()) <<
double(vector.y())
90 <<
double(vector.z());
100 vector.setX(
double(x));
101 vector.setY(
double(y));
102 vector.setZ(
double(z));
Combined button and popup list for selecting options.
QDataStream & operator<<(QDataStream &stream, const QDoubleVector3D &vector)
QDebug operator<<(QDebug dbg, const QDoubleVector3D &vector)
QDataStream & operator>>(QDataStream &stream, QDoubleVector3D &vector)