4 @maintainer Morgan McGuire, matrix@graphics3d.com
12 #include "G3D/Vector4.h"
13 //#include "G3D/Color4.h"
14 #include "G3D/g3dmath.h"
15 #include "G3D/format.h"
16 #include "G3D/stringutils.h"
20 unsigned int Vector4::hashCode() const {
21 unsigned int xhash
= (*(int*)(void*)(&x
));
22 unsigned int yhash
= (*(int*)(void*)(&y
));
23 unsigned int zhash
= (*(int*)(void*)(&z
));
24 unsigned int whash
= (*(int*)(void*)(&w
));
26 return xhash
+ (yhash
* 37) + (zhash
* 101) + (whash
* 241);
30 Vector4::Vector4(const class Color4
& c
) {
39 Vector4::Vector4(const Vector2
& v1
, const Vector2
& v2
) {
47 Vector4::Vector4(const Vector2
& v1
, float fz
, float fw
) {
54 //----------------------------------------------------------------------------
56 Vector4
Vector4::operator/ (float fScalar
) const {
59 if ( fScalar
!= 0.0 ) {
60 float fInvScalar
= 1.0f
/ fScalar
;
61 kQuot
.x
= fInvScalar
* x
;
62 kQuot
.y
= fInvScalar
* y
;
63 kQuot
.z
= fInvScalar
* z
;
64 kQuot
.w
= fInvScalar
* w
;
67 return Vector4::inf();
71 //----------------------------------------------------------------------------
72 Vector4
& Vector4::operator/= (float fScalar
) {
73 if (fScalar
!= 0.0f
) {
74 float fInvScalar
= 1.0f
/ fScalar
;
80 *this = Vector4::inf();
87 //----------------------------------------------------------------------------
89 std::string
Vector4::toString() const {
90 return G3D::format("(%g, %g, %g, %g)", x
, y
, z
, w
);
94 Vector2
Vector4::xx() const { return Vector2 (x
, x
); }
95 Vector2
Vector4::yx() const { return Vector2 (y
, x
); }
96 Vector2
Vector4::zx() const { return Vector2 (z
, x
); }
97 Vector2
Vector4::wx() const { return Vector2 (w
, x
); }
98 Vector2
Vector4::xy() const { return Vector2 (x
, y
); }
99 Vector2
Vector4::yy() const { return Vector2 (y
, y
); }
100 Vector2
Vector4::zy() const { return Vector2 (z
, y
); }
101 Vector2
Vector4::wy() const { return Vector2 (w
, y
); }
102 Vector2
Vector4::xz() const { return Vector2 (x
, z
); }
103 Vector2
Vector4::yz() const { return Vector2 (y
, z
); }
104 Vector2
Vector4::zz() const { return Vector2 (z
, z
); }
105 Vector2
Vector4::wz() const { return Vector2 (w
, z
); }
106 Vector2
Vector4::xw() const { return Vector2 (x
, w
); }
107 Vector2
Vector4::yw() const { return Vector2 (y
, w
); }
108 Vector2
Vector4::zw() const { return Vector2 (z
, w
); }
109 Vector2
Vector4::ww() const { return Vector2 (w
, w
); }
113 Vector3
Vector4::xxx() const { return Vector3 (x
, x
, x
); }
114 Vector3
Vector4::yxx() const { return Vector3 (y
, x
, x
); }
115 Vector3
Vector4::zxx() const { return Vector3 (z
, x
, x
); }
116 Vector3
Vector4::wxx() const { return Vector3 (w
, x
, x
); }
117 Vector3
Vector4::xyx() const { return Vector3 (x
, y
, x
); }
118 Vector3
Vector4::yyx() const { return Vector3 (y
, y
, x
); }
119 Vector3
Vector4::zyx() const { return Vector3 (z
, y
, x
); }
120 Vector3
Vector4::wyx() const { return Vector3 (w
, y
, x
); }
121 Vector3
Vector4::xzx() const { return Vector3 (x
, z
, x
); }
122 Vector3
Vector4::yzx() const { return Vector3 (y
, z
, x
); }
123 Vector3
Vector4::zzx() const { return Vector3 (z
, z
, x
); }
124 Vector3
Vector4::wzx() const { return Vector3 (w
, z
, x
); }
125 Vector3
Vector4::xwx() const { return Vector3 (x
, w
, x
); }
126 Vector3
Vector4::ywx() const { return Vector3 (y
, w
, x
); }
127 Vector3
Vector4::zwx() const { return Vector3 (z
, w
, x
); }
128 Vector3
Vector4::wwx() const { return Vector3 (w
, w
, x
); }
129 Vector3
Vector4::xxy() const { return Vector3 (x
, x
, y
); }
130 Vector3
Vector4::yxy() const { return Vector3 (y
, x
, y
); }
131 Vector3
Vector4::zxy() const { return Vector3 (z
, x
, y
); }
132 Vector3
Vector4::wxy() const { return Vector3 (w
, x
, y
); }
133 Vector3
Vector4::xyy() const { return Vector3 (x
, y
, y
); }
134 Vector3
Vector4::yyy() const { return Vector3 (y
, y
, y
); }
135 Vector3
Vector4::zyy() const { return Vector3 (z
, y
, y
); }
136 Vector3
Vector4::wyy() const { return Vector3 (w
, y
, y
); }
137 Vector3
Vector4::xzy() const { return Vector3 (x
, z
, y
); }
138 Vector3
Vector4::yzy() const { return Vector3 (y
, z
, y
); }
139 Vector3
Vector4::zzy() const { return Vector3 (z
, z
, y
); }
140 Vector3
Vector4::wzy() const { return Vector3 (w
, z
, y
); }
141 Vector3
Vector4::xwy() const { return Vector3 (x
, w
, y
); }
142 Vector3
Vector4::ywy() const { return Vector3 (y
, w
, y
); }
143 Vector3
Vector4::zwy() const { return Vector3 (z
, w
, y
); }
144 Vector3
Vector4::wwy() const { return Vector3 (w
, w
, y
); }
145 Vector3
Vector4::xxz() const { return Vector3 (x
, x
, z
); }
146 Vector3
Vector4::yxz() const { return Vector3 (y
, x
, z
); }
147 Vector3
Vector4::zxz() const { return Vector3 (z
, x
, z
); }
148 Vector3
Vector4::wxz() const { return Vector3 (w
, x
, z
); }
149 Vector3
Vector4::xyz() const { return Vector3 (x
, y
, z
); }
150 Vector3
Vector4::yyz() const { return Vector3 (y
, y
, z
); }
151 Vector3
Vector4::zyz() const { return Vector3 (z
, y
, z
); }
152 Vector3
Vector4::wyz() const { return Vector3 (w
, y
, z
); }
153 Vector3
Vector4::xzz() const { return Vector3 (x
, z
, z
); }
154 Vector3
Vector4::yzz() const { return Vector3 (y
, z
, z
); }
155 Vector3
Vector4::zzz() const { return Vector3 (z
, z
, z
); }
156 Vector3
Vector4::wzz() const { return Vector3 (w
, z
, z
); }
157 Vector3
Vector4::xwz() const { return Vector3 (x
, w
, z
); }
158 Vector3
Vector4::ywz() const { return Vector3 (y
, w
, z
); }
159 Vector3
Vector4::zwz() const { return Vector3 (z
, w
, z
); }
160 Vector3
Vector4::wwz() const { return Vector3 (w
, w
, z
); }
161 Vector3
Vector4::xxw() const { return Vector3 (x
, x
, w
); }
162 Vector3
Vector4::yxw() const { return Vector3 (y
, x
, w
); }
163 Vector3
Vector4::zxw() const { return Vector3 (z
, x
, w
); }
164 Vector3
Vector4::wxw() const { return Vector3 (w
, x
, w
); }
165 Vector3
Vector4::xyw() const { return Vector3 (x
, y
, w
); }
166 Vector3
Vector4::yyw() const { return Vector3 (y
, y
, w
); }
167 Vector3
Vector4::zyw() const { return Vector3 (z
, y
, w
); }
168 Vector3
Vector4::wyw() const { return Vector3 (w
, y
, w
); }
169 Vector3
Vector4::xzw() const { return Vector3 (x
, z
, w
); }
170 Vector3
Vector4::yzw() const { return Vector3 (y
, z
, w
); }
171 Vector3
Vector4::zzw() const { return Vector3 (z
, z
, w
); }
172 Vector3
Vector4::wzw() const { return Vector3 (w
, z
, w
); }
173 Vector3
Vector4::xww() const { return Vector3 (x
, w
, w
); }
174 Vector3
Vector4::yww() const { return Vector3 (y
, w
, w
); }
175 Vector3
Vector4::zww() const { return Vector3 (z
, w
, w
); }
176 Vector3
Vector4::www() const { return Vector3 (w
, w
, w
); }
180 Vector4
Vector4::xxxx() const { return Vector4 (x
, x
, x
, x
); }
181 Vector4
Vector4::yxxx() const { return Vector4 (y
, x
, x
, x
); }
182 Vector4
Vector4::zxxx() const { return Vector4 (z
, x
, x
, x
); }
183 Vector4
Vector4::wxxx() const { return Vector4 (w
, x
, x
, x
); }
184 Vector4
Vector4::xyxx() const { return Vector4 (x
, y
, x
, x
); }
185 Vector4
Vector4::yyxx() const { return Vector4 (y
, y
, x
, x
); }
186 Vector4
Vector4::zyxx() const { return Vector4 (z
, y
, x
, x
); }
187 Vector4
Vector4::wyxx() const { return Vector4 (w
, y
, x
, x
); }
188 Vector4
Vector4::xzxx() const { return Vector4 (x
, z
, x
, x
); }
189 Vector4
Vector4::yzxx() const { return Vector4 (y
, z
, x
, x
); }
190 Vector4
Vector4::zzxx() const { return Vector4 (z
, z
, x
, x
); }
191 Vector4
Vector4::wzxx() const { return Vector4 (w
, z
, x
, x
); }
192 Vector4
Vector4::xwxx() const { return Vector4 (x
, w
, x
, x
); }
193 Vector4
Vector4::ywxx() const { return Vector4 (y
, w
, x
, x
); }
194 Vector4
Vector4::zwxx() const { return Vector4 (z
, w
, x
, x
); }
195 Vector4
Vector4::wwxx() const { return Vector4 (w
, w
, x
, x
); }
196 Vector4
Vector4::xxyx() const { return Vector4 (x
, x
, y
, x
); }
197 Vector4
Vector4::yxyx() const { return Vector4 (y
, x
, y
, x
); }
198 Vector4
Vector4::zxyx() const { return Vector4 (z
, x
, y
, x
); }
199 Vector4
Vector4::wxyx() const { return Vector4 (w
, x
, y
, x
); }
200 Vector4
Vector4::xyyx() const { return Vector4 (x
, y
, y
, x
); }
201 Vector4
Vector4::yyyx() const { return Vector4 (y
, y
, y
, x
); }
202 Vector4
Vector4::zyyx() const { return Vector4 (z
, y
, y
, x
); }
203 Vector4
Vector4::wyyx() const { return Vector4 (w
, y
, y
, x
); }
204 Vector4
Vector4::xzyx() const { return Vector4 (x
, z
, y
, x
); }
205 Vector4
Vector4::yzyx() const { return Vector4 (y
, z
, y
, x
); }
206 Vector4
Vector4::zzyx() const { return Vector4 (z
, z
, y
, x
); }
207 Vector4
Vector4::wzyx() const { return Vector4 (w
, z
, y
, x
); }
208 Vector4
Vector4::xwyx() const { return Vector4 (x
, w
, y
, x
); }
209 Vector4
Vector4::ywyx() const { return Vector4 (y
, w
, y
, x
); }
210 Vector4
Vector4::zwyx() const { return Vector4 (z
, w
, y
, x
); }
211 Vector4
Vector4::wwyx() const { return Vector4 (w
, w
, y
, x
); }
212 Vector4
Vector4::xxzx() const { return Vector4 (x
, x
, z
, x
); }
213 Vector4
Vector4::yxzx() const { return Vector4 (y
, x
, z
, x
); }
214 Vector4
Vector4::zxzx() const { return Vector4 (z
, x
, z
, x
); }
215 Vector4
Vector4::wxzx() const { return Vector4 (w
, x
, z
, x
); }
216 Vector4
Vector4::xyzx() const { return Vector4 (x
, y
, z
, x
); }
217 Vector4
Vector4::yyzx() const { return Vector4 (y
, y
, z
, x
); }
218 Vector4
Vector4::zyzx() const { return Vector4 (z
, y
, z
, x
); }
219 Vector4
Vector4::wyzx() const { return Vector4 (w
, y
, z
, x
); }
220 Vector4
Vector4::xzzx() const { return Vector4 (x
, z
, z
, x
); }
221 Vector4
Vector4::yzzx() const { return Vector4 (y
, z
, z
, x
); }
222 Vector4
Vector4::zzzx() const { return Vector4 (z
, z
, z
, x
); }
223 Vector4
Vector4::wzzx() const { return Vector4 (w
, z
, z
, x
); }
224 Vector4
Vector4::xwzx() const { return Vector4 (x
, w
, z
, x
); }
225 Vector4
Vector4::ywzx() const { return Vector4 (y
, w
, z
, x
); }
226 Vector4
Vector4::zwzx() const { return Vector4 (z
, w
, z
, x
); }
227 Vector4
Vector4::wwzx() const { return Vector4 (w
, w
, z
, x
); }
228 Vector4
Vector4::xxwx() const { return Vector4 (x
, x
, w
, x
); }
229 Vector4
Vector4::yxwx() const { return Vector4 (y
, x
, w
, x
); }
230 Vector4
Vector4::zxwx() const { return Vector4 (z
, x
, w
, x
); }
231 Vector4
Vector4::wxwx() const { return Vector4 (w
, x
, w
, x
); }
232 Vector4
Vector4::xywx() const { return Vector4 (x
, y
, w
, x
); }
233 Vector4
Vector4::yywx() const { return Vector4 (y
, y
, w
, x
); }
234 Vector4
Vector4::zywx() const { return Vector4 (z
, y
, w
, x
); }
235 Vector4
Vector4::wywx() const { return Vector4 (w
, y
, w
, x
); }
236 Vector4
Vector4::xzwx() const { return Vector4 (x
, z
, w
, x
); }
237 Vector4
Vector4::yzwx() const { return Vector4 (y
, z
, w
, x
); }
238 Vector4
Vector4::zzwx() const { return Vector4 (z
, z
, w
, x
); }
239 Vector4
Vector4::wzwx() const { return Vector4 (w
, z
, w
, x
); }
240 Vector4
Vector4::xwwx() const { return Vector4 (x
, w
, w
, x
); }
241 Vector4
Vector4::ywwx() const { return Vector4 (y
, w
, w
, x
); }
242 Vector4
Vector4::zwwx() const { return Vector4 (z
, w
, w
, x
); }
243 Vector4
Vector4::wwwx() const { return Vector4 (w
, w
, w
, x
); }
244 Vector4
Vector4::xxxy() const { return Vector4 (x
, x
, x
, y
); }
245 Vector4
Vector4::yxxy() const { return Vector4 (y
, x
, x
, y
); }
246 Vector4
Vector4::zxxy() const { return Vector4 (z
, x
, x
, y
); }
247 Vector4
Vector4::wxxy() const { return Vector4 (w
, x
, x
, y
); }
248 Vector4
Vector4::xyxy() const { return Vector4 (x
, y
, x
, y
); }
249 Vector4
Vector4::yyxy() const { return Vector4 (y
, y
, x
, y
); }
250 Vector4
Vector4::zyxy() const { return Vector4 (z
, y
, x
, y
); }
251 Vector4
Vector4::wyxy() const { return Vector4 (w
, y
, x
, y
); }
252 Vector4
Vector4::xzxy() const { return Vector4 (x
, z
, x
, y
); }
253 Vector4
Vector4::yzxy() const { return Vector4 (y
, z
, x
, y
); }
254 Vector4
Vector4::zzxy() const { return Vector4 (z
, z
, x
, y
); }
255 Vector4
Vector4::wzxy() const { return Vector4 (w
, z
, x
, y
); }
256 Vector4
Vector4::xwxy() const { return Vector4 (x
, w
, x
, y
); }
257 Vector4
Vector4::ywxy() const { return Vector4 (y
, w
, x
, y
); }
258 Vector4
Vector4::zwxy() const { return Vector4 (z
, w
, x
, y
); }
259 Vector4
Vector4::wwxy() const { return Vector4 (w
, w
, x
, y
); }
260 Vector4
Vector4::xxyy() const { return Vector4 (x
, x
, y
, y
); }
261 Vector4
Vector4::yxyy() const { return Vector4 (y
, x
, y
, y
); }
262 Vector4
Vector4::zxyy() const { return Vector4 (z
, x
, y
, y
); }
263 Vector4
Vector4::wxyy() const { return Vector4 (w
, x
, y
, y
); }
264 Vector4
Vector4::xyyy() const { return Vector4 (x
, y
, y
, y
); }
265 Vector4
Vector4::yyyy() const { return Vector4 (y
, y
, y
, y
); }
266 Vector4
Vector4::zyyy() const { return Vector4 (z
, y
, y
, y
); }
267 Vector4
Vector4::wyyy() const { return Vector4 (w
, y
, y
, y
); }
268 Vector4
Vector4::xzyy() const { return Vector4 (x
, z
, y
, y
); }
269 Vector4
Vector4::yzyy() const { return Vector4 (y
, z
, y
, y
); }
270 Vector4
Vector4::zzyy() const { return Vector4 (z
, z
, y
, y
); }
271 Vector4
Vector4::wzyy() const { return Vector4 (w
, z
, y
, y
); }
272 Vector4
Vector4::xwyy() const { return Vector4 (x
, w
, y
, y
); }
273 Vector4
Vector4::ywyy() const { return Vector4 (y
, w
, y
, y
); }
274 Vector4
Vector4::zwyy() const { return Vector4 (z
, w
, y
, y
); }
275 Vector4
Vector4::wwyy() const { return Vector4 (w
, w
, y
, y
); }
276 Vector4
Vector4::xxzy() const { return Vector4 (x
, x
, z
, y
); }
277 Vector4
Vector4::yxzy() const { return Vector4 (y
, x
, z
, y
); }
278 Vector4
Vector4::zxzy() const { return Vector4 (z
, x
, z
, y
); }
279 Vector4
Vector4::wxzy() const { return Vector4 (w
, x
, z
, y
); }
280 Vector4
Vector4::xyzy() const { return Vector4 (x
, y
, z
, y
); }
281 Vector4
Vector4::yyzy() const { return Vector4 (y
, y
, z
, y
); }
282 Vector4
Vector4::zyzy() const { return Vector4 (z
, y
, z
, y
); }
283 Vector4
Vector4::wyzy() const { return Vector4 (w
, y
, z
, y
); }
284 Vector4
Vector4::xzzy() const { return Vector4 (x
, z
, z
, y
); }
285 Vector4
Vector4::yzzy() const { return Vector4 (y
, z
, z
, y
); }
286 Vector4
Vector4::zzzy() const { return Vector4 (z
, z
, z
, y
); }
287 Vector4
Vector4::wzzy() const { return Vector4 (w
, z
, z
, y
); }
288 Vector4
Vector4::xwzy() const { return Vector4 (x
, w
, z
, y
); }
289 Vector4
Vector4::ywzy() const { return Vector4 (y
, w
, z
, y
); }
290 Vector4
Vector4::zwzy() const { return Vector4 (z
, w
, z
, y
); }
291 Vector4
Vector4::wwzy() const { return Vector4 (w
, w
, z
, y
); }
292 Vector4
Vector4::xxwy() const { return Vector4 (x
, x
, w
, y
); }
293 Vector4
Vector4::yxwy() const { return Vector4 (y
, x
, w
, y
); }
294 Vector4
Vector4::zxwy() const { return Vector4 (z
, x
, w
, y
); }
295 Vector4
Vector4::wxwy() const { return Vector4 (w
, x
, w
, y
); }
296 Vector4
Vector4::xywy() const { return Vector4 (x
, y
, w
, y
); }
297 Vector4
Vector4::yywy() const { return Vector4 (y
, y
, w
, y
); }
298 Vector4
Vector4::zywy() const { return Vector4 (z
, y
, w
, y
); }
299 Vector4
Vector4::wywy() const { return Vector4 (w
, y
, w
, y
); }
300 Vector4
Vector4::xzwy() const { return Vector4 (x
, z
, w
, y
); }
301 Vector4
Vector4::yzwy() const { return Vector4 (y
, z
, w
, y
); }
302 Vector4
Vector4::zzwy() const { return Vector4 (z
, z
, w
, y
); }
303 Vector4
Vector4::wzwy() const { return Vector4 (w
, z
, w
, y
); }
304 Vector4
Vector4::xwwy() const { return Vector4 (x
, w
, w
, y
); }
305 Vector4
Vector4::ywwy() const { return Vector4 (y
, w
, w
, y
); }
306 Vector4
Vector4::zwwy() const { return Vector4 (z
, w
, w
, y
); }
307 Vector4
Vector4::wwwy() const { return Vector4 (w
, w
, w
, y
); }
308 Vector4
Vector4::xxxz() const { return Vector4 (x
, x
, x
, z
); }
309 Vector4
Vector4::yxxz() const { return Vector4 (y
, x
, x
, z
); }
310 Vector4
Vector4::zxxz() const { return Vector4 (z
, x
, x
, z
); }
311 Vector4
Vector4::wxxz() const { return Vector4 (w
, x
, x
, z
); }
312 Vector4
Vector4::xyxz() const { return Vector4 (x
, y
, x
, z
); }
313 Vector4
Vector4::yyxz() const { return Vector4 (y
, y
, x
, z
); }
314 Vector4
Vector4::zyxz() const { return Vector4 (z
, y
, x
, z
); }
315 Vector4
Vector4::wyxz() const { return Vector4 (w
, y
, x
, z
); }
316 Vector4
Vector4::xzxz() const { return Vector4 (x
, z
, x
, z
); }
317 Vector4
Vector4::yzxz() const { return Vector4 (y
, z
, x
, z
); }
318 Vector4
Vector4::zzxz() const { return Vector4 (z
, z
, x
, z
); }
319 Vector4
Vector4::wzxz() const { return Vector4 (w
, z
, x
, z
); }
320 Vector4
Vector4::xwxz() const { return Vector4 (x
, w
, x
, z
); }
321 Vector4
Vector4::ywxz() const { return Vector4 (y
, w
, x
, z
); }
322 Vector4
Vector4::zwxz() const { return Vector4 (z
, w
, x
, z
); }
323 Vector4
Vector4::wwxz() const { return Vector4 (w
, w
, x
, z
); }
324 Vector4
Vector4::xxyz() const { return Vector4 (x
, x
, y
, z
); }
325 Vector4
Vector4::yxyz() const { return Vector4 (y
, x
, y
, z
); }
326 Vector4
Vector4::zxyz() const { return Vector4 (z
, x
, y
, z
); }
327 Vector4
Vector4::wxyz() const { return Vector4 (w
, x
, y
, z
); }
328 Vector4
Vector4::xyyz() const { return Vector4 (x
, y
, y
, z
); }
329 Vector4
Vector4::yyyz() const { return Vector4 (y
, y
, y
, z
); }
330 Vector4
Vector4::zyyz() const { return Vector4 (z
, y
, y
, z
); }
331 Vector4
Vector4::wyyz() const { return Vector4 (w
, y
, y
, z
); }
332 Vector4
Vector4::xzyz() const { return Vector4 (x
, z
, y
, z
); }
333 Vector4
Vector4::yzyz() const { return Vector4 (y
, z
, y
, z
); }
334 Vector4
Vector4::zzyz() const { return Vector4 (z
, z
, y
, z
); }
335 Vector4
Vector4::wzyz() const { return Vector4 (w
, z
, y
, z
); }
336 Vector4
Vector4::xwyz() const { return Vector4 (x
, w
, y
, z
); }
337 Vector4
Vector4::ywyz() const { return Vector4 (y
, w
, y
, z
); }
338 Vector4
Vector4::zwyz() const { return Vector4 (z
, w
, y
, z
); }
339 Vector4
Vector4::wwyz() const { return Vector4 (w
, w
, y
, z
); }
340 Vector4
Vector4::xxzz() const { return Vector4 (x
, x
, z
, z
); }
341 Vector4
Vector4::yxzz() const { return Vector4 (y
, x
, z
, z
); }
342 Vector4
Vector4::zxzz() const { return Vector4 (z
, x
, z
, z
); }
343 Vector4
Vector4::wxzz() const { return Vector4 (w
, x
, z
, z
); }
344 Vector4
Vector4::xyzz() const { return Vector4 (x
, y
, z
, z
); }
345 Vector4
Vector4::yyzz() const { return Vector4 (y
, y
, z
, z
); }
346 Vector4
Vector4::zyzz() const { return Vector4 (z
, y
, z
, z
); }
347 Vector4
Vector4::wyzz() const { return Vector4 (w
, y
, z
, z
); }
348 Vector4
Vector4::xzzz() const { return Vector4 (x
, z
, z
, z
); }
349 Vector4
Vector4::yzzz() const { return Vector4 (y
, z
, z
, z
); }
350 Vector4
Vector4::zzzz() const { return Vector4 (z
, z
, z
, z
); }
351 Vector4
Vector4::wzzz() const { return Vector4 (w
, z
, z
, z
); }
352 Vector4
Vector4::xwzz() const { return Vector4 (x
, w
, z
, z
); }
353 Vector4
Vector4::ywzz() const { return Vector4 (y
, w
, z
, z
); }
354 Vector4
Vector4::zwzz() const { return Vector4 (z
, w
, z
, z
); }
355 Vector4
Vector4::wwzz() const { return Vector4 (w
, w
, z
, z
); }
356 Vector4
Vector4::xxwz() const { return Vector4 (x
, x
, w
, z
); }
357 Vector4
Vector4::yxwz() const { return Vector4 (y
, x
, w
, z
); }
358 Vector4
Vector4::zxwz() const { return Vector4 (z
, x
, w
, z
); }
359 Vector4
Vector4::wxwz() const { return Vector4 (w
, x
, w
, z
); }
360 Vector4
Vector4::xywz() const { return Vector4 (x
, y
, w
, z
); }
361 Vector4
Vector4::yywz() const { return Vector4 (y
, y
, w
, z
); }
362 Vector4
Vector4::zywz() const { return Vector4 (z
, y
, w
, z
); }
363 Vector4
Vector4::wywz() const { return Vector4 (w
, y
, w
, z
); }
364 Vector4
Vector4::xzwz() const { return Vector4 (x
, z
, w
, z
); }
365 Vector4
Vector4::yzwz() const { return Vector4 (y
, z
, w
, z
); }
366 Vector4
Vector4::zzwz() const { return Vector4 (z
, z
, w
, z
); }
367 Vector4
Vector4::wzwz() const { return Vector4 (w
, z
, w
, z
); }
368 Vector4
Vector4::xwwz() const { return Vector4 (x
, w
, w
, z
); }
369 Vector4
Vector4::ywwz() const { return Vector4 (y
, w
, w
, z
); }
370 Vector4
Vector4::zwwz() const { return Vector4 (z
, w
, w
, z
); }
371 Vector4
Vector4::wwwz() const { return Vector4 (w
, w
, w
, z
); }
372 Vector4
Vector4::xxxw() const { return Vector4 (x
, x
, x
, w
); }
373 Vector4
Vector4::yxxw() const { return Vector4 (y
, x
, x
, w
); }
374 Vector4
Vector4::zxxw() const { return Vector4 (z
, x
, x
, w
); }
375 Vector4
Vector4::wxxw() const { return Vector4 (w
, x
, x
, w
); }
376 Vector4
Vector4::xyxw() const { return Vector4 (x
, y
, x
, w
); }
377 Vector4
Vector4::yyxw() const { return Vector4 (y
, y
, x
, w
); }
378 Vector4
Vector4::zyxw() const { return Vector4 (z
, y
, x
, w
); }
379 Vector4
Vector4::wyxw() const { return Vector4 (w
, y
, x
, w
); }
380 Vector4
Vector4::xzxw() const { return Vector4 (x
, z
, x
, w
); }
381 Vector4
Vector4::yzxw() const { return Vector4 (y
, z
, x
, w
); }
382 Vector4
Vector4::zzxw() const { return Vector4 (z
, z
, x
, w
); }
383 Vector4
Vector4::wzxw() const { return Vector4 (w
, z
, x
, w
); }
384 Vector4
Vector4::xwxw() const { return Vector4 (x
, w
, x
, w
); }
385 Vector4
Vector4::ywxw() const { return Vector4 (y
, w
, x
, w
); }
386 Vector4
Vector4::zwxw() const { return Vector4 (z
, w
, x
, w
); }
387 Vector4
Vector4::wwxw() const { return Vector4 (w
, w
, x
, w
); }
388 Vector4
Vector4::xxyw() const { return Vector4 (x
, x
, y
, w
); }
389 Vector4
Vector4::yxyw() const { return Vector4 (y
, x
, y
, w
); }
390 Vector4
Vector4::zxyw() const { return Vector4 (z
, x
, y
, w
); }
391 Vector4
Vector4::wxyw() const { return Vector4 (w
, x
, y
, w
); }
392 Vector4
Vector4::xyyw() const { return Vector4 (x
, y
, y
, w
); }
393 Vector4
Vector4::yyyw() const { return Vector4 (y
, y
, y
, w
); }
394 Vector4
Vector4::zyyw() const { return Vector4 (z
, y
, y
, w
); }
395 Vector4
Vector4::wyyw() const { return Vector4 (w
, y
, y
, w
); }
396 Vector4
Vector4::xzyw() const { return Vector4 (x
, z
, y
, w
); }
397 Vector4
Vector4::yzyw() const { return Vector4 (y
, z
, y
, w
); }
398 Vector4
Vector4::zzyw() const { return Vector4 (z
, z
, y
, w
); }
399 Vector4
Vector4::wzyw() const { return Vector4 (w
, z
, y
, w
); }
400 Vector4
Vector4::xwyw() const { return Vector4 (x
, w
, y
, w
); }
401 Vector4
Vector4::ywyw() const { return Vector4 (y
, w
, y
, w
); }
402 Vector4
Vector4::zwyw() const { return Vector4 (z
, w
, y
, w
); }
403 Vector4
Vector4::wwyw() const { return Vector4 (w
, w
, y
, w
); }
404 Vector4
Vector4::xxzw() const { return Vector4 (x
, x
, z
, w
); }
405 Vector4
Vector4::yxzw() const { return Vector4 (y
, x
, z
, w
); }
406 Vector4
Vector4::zxzw() const { return Vector4 (z
, x
, z
, w
); }
407 Vector4
Vector4::wxzw() const { return Vector4 (w
, x
, z
, w
); }
408 Vector4
Vector4::xyzw() const { return Vector4 (x
, y
, z
, w
); }
409 Vector4
Vector4::yyzw() const { return Vector4 (y
, y
, z
, w
); }
410 Vector4
Vector4::zyzw() const { return Vector4 (z
, y
, z
, w
); }
411 Vector4
Vector4::wyzw() const { return Vector4 (w
, y
, z
, w
); }
412 Vector4
Vector4::xzzw() const { return Vector4 (x
, z
, z
, w
); }
413 Vector4
Vector4::yzzw() const { return Vector4 (y
, z
, z
, w
); }
414 Vector4
Vector4::zzzw() const { return Vector4 (z
, z
, z
, w
); }
415 Vector4
Vector4::wzzw() const { return Vector4 (w
, z
, z
, w
); }
416 Vector4
Vector4::xwzw() const { return Vector4 (x
, w
, z
, w
); }
417 Vector4
Vector4::ywzw() const { return Vector4 (y
, w
, z
, w
); }
418 Vector4
Vector4::zwzw() const { return Vector4 (z
, w
, z
, w
); }
419 Vector4
Vector4::wwzw() const { return Vector4 (w
, w
, z
, w
); }
420 Vector4
Vector4::xxww() const { return Vector4 (x
, x
, w
, w
); }
421 Vector4
Vector4::yxww() const { return Vector4 (y
, x
, w
, w
); }
422 Vector4
Vector4::zxww() const { return Vector4 (z
, x
, w
, w
); }
423 Vector4
Vector4::wxww() const { return Vector4 (w
, x
, w
, w
); }
424 Vector4
Vector4::xyww() const { return Vector4 (x
, y
, w
, w
); }
425 Vector4
Vector4::yyww() const { return Vector4 (y
, y
, w
, w
); }
426 Vector4
Vector4::zyww() const { return Vector4 (z
, y
, w
, w
); }
427 Vector4
Vector4::wyww() const { return Vector4 (w
, y
, w
, w
); }
428 Vector4
Vector4::xzww() const { return Vector4 (x
, z
, w
, w
); }
429 Vector4
Vector4::yzww() const { return Vector4 (y
, z
, w
, w
); }
430 Vector4
Vector4::zzww() const { return Vector4 (z
, z
, w
, w
); }
431 Vector4
Vector4::wzww() const { return Vector4 (w
, z
, w
, w
); }
432 Vector4
Vector4::xwww() const { return Vector4 (x
, w
, w
, w
); }
433 Vector4
Vector4::ywww() const { return Vector4 (y
, w
, w
, w
); }
434 Vector4
Vector4::zwww() const { return Vector4 (z
, w
, w
, w
); }
435 Vector4
Vector4::wwww() const { return Vector4 (w
, w
, w
, w
); }