[4054] added: Line of sight (vmaps) [part 1]
[mangos-git.git] / dep / src / g3dlite / Vector4.cpp
blobbfea20202c4af70baae67685359b70632f44c179
1 /**
2 @file Vector4.cpp
4 @maintainer Morgan McGuire, matrix@graphics3d.com
6 @created 2001-07-09
7 @edited 2003-09-29
8 */
10 #include <stdlib.h>
11 #include <limits>
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"
18 namespace G3D {
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);
29 #if 0
30 Vector4::Vector4(const class Color4& c) {
31 x = c.r;
32 y = c.g;
33 z = c.b;
34 w = c.a;
36 #endif
39 Vector4::Vector4(const Vector2& v1, const Vector2& v2) {
40 x = v1.x;
41 y = v1.y;
42 z = v2.x;
43 w = v2.y;
47 Vector4::Vector4(const Vector2& v1, float fz, float fw) {
48 x = v1.x;
49 y = v1.y;
50 z = fz;
51 w = fw;
54 //----------------------------------------------------------------------------
56 Vector4 Vector4::operator/ (float fScalar) const {
57 Vector4 kQuot;
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;
65 return kQuot;
66 } else {
67 return Vector4::inf();
71 //----------------------------------------------------------------------------
72 Vector4& Vector4::operator/= (float fScalar) {
73 if (fScalar != 0.0f) {
74 float fInvScalar = 1.0f / fScalar;
75 x *= fInvScalar;
76 y *= fInvScalar;
77 z *= fInvScalar;
78 w *= fInvScalar;
79 } else {
80 *this = Vector4::inf();
83 return *this;
87 //----------------------------------------------------------------------------
89 std::string Vector4::toString() const {
90 return G3D::format("(%g, %g, %g, %g)", x, y, z, w);
92 // 2-char swizzles
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); }
111 // 3-char swizzles
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); }
178 // 4-char swizzles
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); }
438 }; // namespace