Absolute File Name: | /home/qt/qt5_coco/qt5/qtbase/src/gui/math3d/qvector3d.cpp |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||
2 | - | |||||||||||||
3 | QVector3D::QVector3D(const QVector2D& vector) | - | ||||||||||||
4 | { | - | ||||||||||||
5 | xp = vector.xp; | - | ||||||||||||
6 | yp = vector.yp; | - | ||||||||||||
7 | zp = 0.0f; | - | ||||||||||||
8 | } never executed: end of block | 0 | ||||||||||||
9 | - | |||||||||||||
10 | - | |||||||||||||
11 | - | |||||||||||||
12 | - | |||||||||||||
13 | - | |||||||||||||
14 | - | |||||||||||||
15 | - | |||||||||||||
16 | QVector3D::QVector3D(const QVector2D& vector, float zpos) | - | ||||||||||||
17 | { | - | ||||||||||||
18 | xp = vector.xp; | - | ||||||||||||
19 | yp = vector.yp; | - | ||||||||||||
20 | zp = zpos; | - | ||||||||||||
21 | } never executed: end of block | 0 | ||||||||||||
22 | QVector3D::QVector3D(const QVector4D& vector) | - | ||||||||||||
23 | { | - | ||||||||||||
24 | xp = vector.xp; | - | ||||||||||||
25 | yp = vector.yp; | - | ||||||||||||
26 | zp = vector.zp; | - | ||||||||||||
27 | } never executed: end of block | 0 | ||||||||||||
28 | QVector3D QVector3D::normalized() const | - | ||||||||||||
29 | { | - | ||||||||||||
30 | - | |||||||||||||
31 | double len = double(xp) * double(xp) + | - | ||||||||||||
32 | double(yp) * double(yp) + | - | ||||||||||||
33 | double(zp) * double(zp); | - | ||||||||||||
34 | if (qFuzzyIsNull(len - 1.0f)
| 0 | ||||||||||||
35 | return never executed: *this;return *this; never executed: return *this; | 0 | ||||||||||||
36 | } else if (!qFuzzyIsNull(len)
| 0 | ||||||||||||
37 | double sqrtLen = std::sqrt(len); | - | ||||||||||||
38 | return never executed: QVector3D(float(double(xp) / sqrtLen),return QVector3D(float(double(xp) / sqrtLen), float(double(yp) / sqrtLen), float(double(zp) / sqrtLen)); never executed: return QVector3D(float(double(xp) / sqrtLen), float(double(yp) / sqrtLen), float(double(zp) / sqrtLen)); | 0 | ||||||||||||
39 | float(double(yp) / sqrtLen), never executed: return QVector3D(float(double(xp) / sqrtLen), float(double(yp) / sqrtLen), float(double(zp) / sqrtLen)); | 0 | ||||||||||||
40 | float(double(zp) / sqrtLen)); never executed: return QVector3D(float(double(xp) / sqrtLen), float(double(yp) / sqrtLen), float(double(zp) / sqrtLen)); | 0 | ||||||||||||
41 | } else { | - | ||||||||||||
42 | return never executed: QVector3D();return QVector3D(); never executed: return QVector3D(); | 0 | ||||||||||||
43 | } | - | ||||||||||||
44 | } | - | ||||||||||||
45 | - | |||||||||||||
46 | - | |||||||||||||
47 | - | |||||||||||||
48 | - | |||||||||||||
49 | - | |||||||||||||
50 | - | |||||||||||||
51 | - | |||||||||||||
52 | void QVector3D::normalize() | - | ||||||||||||
53 | { | - | ||||||||||||
54 | - | |||||||||||||
55 | double len = double(xp) * double(xp) + | - | ||||||||||||
56 | double(yp) * double(yp) + | - | ||||||||||||
57 | double(zp) * double(zp); | - | ||||||||||||
58 | if (qFuzzyIsNull(len - 1.0f)
| 0 | ||||||||||||
59 | return; never executed: return; | 0 | ||||||||||||
60 | - | |||||||||||||
61 | len = std::sqrt(len); | - | ||||||||||||
62 | - | |||||||||||||
63 | xp = float(double(xp) / len); | - | ||||||||||||
64 | yp = float(double(yp) / len); | - | ||||||||||||
65 | zp = float(double(zp) / len); | - | ||||||||||||
66 | } never executed: end of block | 0 | ||||||||||||
67 | float QVector3D::dotProduct(const QVector3D& v1, const QVector3D& v2) | - | ||||||||||||
68 | { | - | ||||||||||||
69 | return never executed: v1.xp * v2.xp + v1.yp * v2.yp + v1.zp * v2.zp;return v1.xp * v2.xp + v1.yp * v2.yp + v1.zp * v2.zp; never executed: return v1.xp * v2.xp + v1.yp * v2.yp + v1.zp * v2.zp; | 0 | ||||||||||||
70 | } | - | ||||||||||||
71 | - | |||||||||||||
72 | - | |||||||||||||
73 | - | |||||||||||||
74 | - | |||||||||||||
75 | - | |||||||||||||
76 | - | |||||||||||||
77 | - | |||||||||||||
78 | QVector3D QVector3D::crossProduct(const QVector3D& v1, const QVector3D& v2) | - | ||||||||||||
79 | { | - | ||||||||||||
80 | return never executed: QVector3D(v1.yp * v2.zp - v1.zp * v2.yp,return QVector3D(v1.yp * v2.zp - v1.zp * v2.yp, v1.zp * v2.xp - v1.xp * v2.zp, v1.xp * v2.yp - v1.yp * v2.xp); never executed: return QVector3D(v1.yp * v2.zp - v1.zp * v2.yp, v1.zp * v2.xp - v1.xp * v2.zp, v1.xp * v2.yp - v1.yp * v2.xp); | 0 | ||||||||||||
81 | v1.zp * v2.xp - v1.xp * v2.zp, never executed: return QVector3D(v1.yp * v2.zp - v1.zp * v2.yp, v1.zp * v2.xp - v1.xp * v2.zp, v1.xp * v2.yp - v1.yp * v2.xp); | 0 | ||||||||||||
82 | v1.xp * v2.yp - v1.yp * v2.xp); never executed: return QVector3D(v1.yp * v2.zp - v1.zp * v2.yp, v1.zp * v2.xp - v1.xp * v2.zp, v1.xp * v2.yp - v1.yp * v2.xp); | 0 | ||||||||||||
83 | } | - | ||||||||||||
84 | QVector3D QVector3D::normal(const QVector3D& v1, const QVector3D& v2) | - | ||||||||||||
85 | { | - | ||||||||||||
86 | return never executed: crossProduct(v1, v2).normalized();return crossProduct(v1, v2).normalized(); never executed: return crossProduct(v1, v2).normalized(); | 0 | ||||||||||||
87 | } | - | ||||||||||||
88 | QVector3D QVector3D::normal | - | ||||||||||||
89 | (const QVector3D& v1, const QVector3D& v2, const QVector3D& v3) | - | ||||||||||||
90 | { | - | ||||||||||||
91 | return never executed: crossProduct((v2 - v1), (v3 - v1)).normalized();return crossProduct((v2 - v1), (v3 - v1)).normalized(); never executed: return crossProduct((v2 - v1), (v3 - v1)).normalized(); | 0 | ||||||||||||
92 | } | - | ||||||||||||
93 | QVector3D QVector3D::project(const QMatrix4x4 &modelView, const QMatrix4x4 &projection, const QRect &viewport) const | - | ||||||||||||
94 | { | - | ||||||||||||
95 | QVector4D tmp(*this, 1.0f); | - | ||||||||||||
96 | tmp = projection * modelView * tmp; | - | ||||||||||||
97 | if (qFuzzyIsNull(tmp.w())
| 0 | ||||||||||||
98 | tmp.setW(1.0f); never executed: tmp.setW(1.0f); | 0 | ||||||||||||
99 | tmp /= tmp.w(); | - | ||||||||||||
100 | - | |||||||||||||
101 | tmp = tmp * 0.5f + QVector4D(0.5f, 0.5f, 0.5f, 0.5f); | - | ||||||||||||
102 | tmp.setX(tmp.x() * viewport.width() + viewport.x()); | - | ||||||||||||
103 | tmp.setY(tmp.y() * viewport.height() + viewport.y()); | - | ||||||||||||
104 | - | |||||||||||||
105 | return never executed: tmp.toVector3D();return tmp.toVector3D(); never executed: return tmp.toVector3D(); | 0 | ||||||||||||
106 | } | - | ||||||||||||
107 | QVector3D QVector3D::unproject(const QMatrix4x4 &modelView, const QMatrix4x4 &projection, const QRect &viewport) const | - | ||||||||||||
108 | { | - | ||||||||||||
109 | QMatrix4x4 inverse = QMatrix4x4( projection * modelView ).inverted(); | - | ||||||||||||
110 | - | |||||||||||||
111 | QVector4D tmp(*this, 1.0f); | - | ||||||||||||
112 | tmp.setX((tmp.x() - float(viewport.x())) / float(viewport.width())); | - | ||||||||||||
113 | tmp.setY((tmp.y() - float(viewport.y())) / float(viewport.height())); | - | ||||||||||||
114 | tmp = tmp * 2.0f - QVector4D(1.0f, 1.0f, 1.0f, 1.0f); | - | ||||||||||||
115 | - | |||||||||||||
116 | QVector4D obj = inverse * tmp; | - | ||||||||||||
117 | if (qFuzzyIsNull(obj.w())
| 0 | ||||||||||||
118 | obj.setW(1.0f); never executed: obj.setW(1.0f); | 0 | ||||||||||||
119 | obj /= obj.w(); | - | ||||||||||||
120 | return never executed: obj.toVector3D();return obj.toVector3D(); never executed: return obj.toVector3D(); | 0 | ||||||||||||
121 | } | - | ||||||||||||
122 | float QVector3D::distanceToPoint(const QVector3D& point) const | - | ||||||||||||
123 | { | - | ||||||||||||
124 | return never executed: (*this - point).length();return (*this - point).length(); never executed: return (*this - point).length(); | 0 | ||||||||||||
125 | } | - | ||||||||||||
126 | float QVector3D::distanceToPlane | - | ||||||||||||
127 | (const QVector3D& plane, const QVector3D& normal) const | - | ||||||||||||
128 | { | - | ||||||||||||
129 | return never executed: dotProduct(*this - plane, normal);return dotProduct(*this - plane, normal); never executed: return dotProduct(*this - plane, normal); | 0 | ||||||||||||
130 | } | - | ||||||||||||
131 | float QVector3D::distanceToPlane | - | ||||||||||||
132 | (const QVector3D& plane1, const QVector3D& plane2, const QVector3D& plane3) const | - | ||||||||||||
133 | { | - | ||||||||||||
134 | QVector3D n = normal(plane2 - plane1, plane3 - plane1); | - | ||||||||||||
135 | return never executed: dotProduct(*this - plane1, n);return dotProduct(*this - plane1, n); never executed: return dotProduct(*this - plane1, n); | 0 | ||||||||||||
136 | } | - | ||||||||||||
137 | float QVector3D::distanceToLine | - | ||||||||||||
138 | (const QVector3D& point, const QVector3D& direction) const | - | ||||||||||||
139 | { | - | ||||||||||||
140 | if (direction.isNull()
| 0 | ||||||||||||
141 | return never executed: (*this - point).length();return (*this - point).length(); never executed: return (*this - point).length(); | 0 | ||||||||||||
142 | QVector3D p = point + dotProduct(*this - point, direction) * direction; | - | ||||||||||||
143 | return never executed: (*this - p).length();return (*this - p).length(); never executed: return (*this - p).length(); | 0 | ||||||||||||
144 | } | - | ||||||||||||
145 | QVector2D QVector3D::toVector2D() const | - | ||||||||||||
146 | { | - | ||||||||||||
147 | return never executed: QVector2D(xp, yp);return QVector2D(xp, yp); never executed: return QVector2D(xp, yp); | 0 | ||||||||||||
148 | } | - | ||||||||||||
149 | QVector4D QVector3D::toVector4D() const | - | ||||||||||||
150 | { | - | ||||||||||||
151 | return never executed: QVector4D(xp, yp, zp, 0.0f);return QVector4D(xp, yp, zp, 0.0f); never executed: return QVector4D(xp, yp, zp, 0.0f); | 0 | ||||||||||||
152 | } | - | ||||||||||||
153 | QVector3D::operator QVariant() const | - | ||||||||||||
154 | { | - | ||||||||||||
155 | return never executed: QVariant(QVariant::Vector3D, this);return QVariant(QVariant::Vector3D, this); never executed: return QVariant(QVariant::Vector3D, this); | 0 | ||||||||||||
156 | } | - | ||||||||||||
157 | - | |||||||||||||
158 | - | |||||||||||||
159 | - | |||||||||||||
160 | - | |||||||||||||
161 | - | |||||||||||||
162 | - | |||||||||||||
163 | float QVector3D::length() const | - | ||||||||||||
164 | { | - | ||||||||||||
165 | - | |||||||||||||
166 | double len = double(xp) * double(xp) + | - | ||||||||||||
167 | double(yp) * double(yp) + | - | ||||||||||||
168 | double(zp) * double(zp); | - | ||||||||||||
169 | return never executed: float(std::sqrt(len));return float(std::sqrt(len)); never executed: return float(std::sqrt(len)); | 0 | ||||||||||||
170 | } | - | ||||||||||||
171 | - | |||||||||||||
172 | - | |||||||||||||
173 | - | |||||||||||||
174 | - | |||||||||||||
175 | - | |||||||||||||
176 | - | |||||||||||||
177 | - | |||||||||||||
178 | float QVector3D::lengthSquared() const | - | ||||||||||||
179 | { | - | ||||||||||||
180 | return never executed: xp * xp + yp * yp + zp * zp;return xp * xp + yp * yp + zp * zp; never executed: return xp * xp + yp * yp + zp * zp; | 0 | ||||||||||||
181 | } | - | ||||||||||||
182 | - | |||||||||||||
183 | - | |||||||||||||
184 | - | |||||||||||||
185 | QDebug operator<<(QDebug dbg, const QVector3D &vector) | - | ||||||||||||
186 | { | - | ||||||||||||
187 | QDebugStateSaver saver(dbg); | - | ||||||||||||
188 | dbg.nospace() << "QVector3D(" | - | ||||||||||||
189 | << vector.x() << ", " << vector.y() << ", " << vector.z() << ')'; | - | ||||||||||||
190 | return never executed: dbg;return dbg; never executed: return dbg; | 0 | ||||||||||||
191 | } | - | ||||||||||||
192 | QDataStream &operator<<(QDataStream &stream, const QVector3D &vector) | - | ||||||||||||
193 | { | - | ||||||||||||
194 | stream << vector.x() << vector.y() << vector.z(); | - | ||||||||||||
195 | return never executed: stream;return stream; never executed: return stream; | 0 | ||||||||||||
196 | } | - | ||||||||||||
197 | QDataStream &operator>>(QDataStream &stream, QVector3D &vector) | - | ||||||||||||
198 | { | - | ||||||||||||
199 | float x, y, z; | - | ||||||||||||
200 | stream >> x; | - | ||||||||||||
201 | stream >> y; | - | ||||||||||||
202 | stream >> z; | - | ||||||||||||
203 | vector.setX(x); | - | ||||||||||||
204 | vector.setY(y); | - | ||||||||||||
205 | vector.setZ(z); | - | ||||||||||||
206 | return never executed: stream;return stream; never executed: return stream; | 0 | ||||||||||||
207 | } | - | ||||||||||||
208 | - | |||||||||||||
209 | - | |||||||||||||
210 | - | |||||||||||||
211 | - | |||||||||||||
212 | - | |||||||||||||
213 | - | |||||||||||||
Switch to Source code | Preprocessed file |