Honeycomb  0.1
Component-Model Framework
Vec4.h
Go to the documentation of this file.
1 // Honeycomb, Copyright (C) 2015 NewGamePlus Inc. Distributed under the Boost Software License v1.0.
2 #pragma once
3 
6 
7 namespace honey
8 {
9 
10 template<class Real, int Options>
11 struct matrix::priv::Traits<Vec<4,Real,Options>> : vec::priv::Traits<4,Real,Options,std::allocator<int8>>
12 {
14 };
15 
16 namespace vec { namespace priv
17 {
18  template<class Real, szt Align>
19  struct StorageFieldsMixin<Real, 4, Align>
20  {
25  };
26 
27  template<class Real>
28  struct StorageFieldsMixin<Real, 4, 16>
29  {
30  ALIGN(16) Real x;
34  };
35 } }
36 
37 namespace matrix { namespace priv
38 {
39  template<class R, int O>
40  void storageCopy(const R* a, Vec<4,R,O>& v) { v.x = a[0]; v.y = a[1]; v.z = a[2]; v.w = a[3]; }
41  template<class R, int O>
42  void storageCopy(const Vec<4,R,O>& v, R* a) { a[0] = v.x; a[1] = v.y; a[2] = v.z; a[3] = v.w; }
43 
44  template<class R, int O>
45  void storageFill(Vec<4,R,O>& v, R f) { v.x = f; v.y = f; v.z = f; v.w = f; }
46  template<class R, int O>
47  void storageFillZero(Vec<4,R,O>& v) { v.x = 0; v.y = 0; v.z = 0; v.w = 0; }
48 
49  template<class R, int O>
50  bool storageEqual(const Vec<4,R,O>& lhs, const Vec<4,R,O>& rhs) { return lhs.x == rhs.x && lhs.y == rhs.y && lhs.z == rhs.z && lhs.w == rhs.w; }
51 } }
52 
54 template<class Real, int Options>
55 class Vec<4,Real,Options> : public VecBase<Vec<4,Real,Options>>
56 {
58 protected:
59  typedef Vec<2,Real> Vec2;
60  typedef Vec<3,Real> Vec3;
61  typedef Vec Vec4;
68 public:
69  using Super::dot;
70  using Super::x;
71  using Super::y;
72  using Super::z;
73  using Super::w;
74 
76  Vec() {}
77  Vec(Real x, Real y, Real z, Real w) { this->x = x; this->y = y; this->z = z; this->w = w; }
79  explicit Vec(Real scalar) { this->fromScalar(scalar); }
81  explicit Vec(const Vec2& v, Real z = 0, Real w = 0) { x = v.x; y = v.y; this->z = z; this->w = w; }
83  explicit Vec(const Vec3& v, Real w = 1) { x = v.x; y = v.y; z = v.z; this->w = w; }
85  template<class T>
86  Vec(const MatrixBase<T>& rhs) { operator=(rhs); }
87 
88  template<class T>
89  Vec& operator=(const MatrixBase<T>& rhs) { Super::operator=(rhs); return *this; }
90 
93  Real lengthSqr() const { return x*x + y*y + z*z + w*w; }
94  Real dot(const Vec& v) const { return x*v.x + y*v.y + z*v.z + w*v.w; }
96 
98  Vec4 cross(const Vec4& v1, const Vec4& v2) const
99  {
100  Vec4 ret;
101  ret.x = y * (v1.z*v2.w - v2.z*v1.w) - z * (v1.y*v2.w - v2.y*v1.w) + w * (v1.y*v2.z - v1.z*v2.y);
102  ret.y = -( x * (v1.z*v2.w - v2.z*v1.w) - z * (v1.x*v2.w - v2.x*v1.w) + w * (v1.x*v2.z - v2.x*v1.z) );
103  ret.z = x * (v1.y*v2.w - v2.y*v1.w) - y * (v1.x*v2.w - v2.x*v1.w) + w * (v1.x*v2.y - v2.x*v1.y);
104  ret.w = -( x * (v1.y*v2.z - v2.y*v1.z) - y * (v1.x*v2.z - v2.x*v1.z) + z * (v1.x*v2.y - v2.x*v1.y) );
105  return ret;
106  }
107 
108 public:
109  static const Vec zero;
110  static const Vec one;
111  static const Vec axisX;
112  static const Vec axisY;
113  static const Vec axisZ;
114  static const Vec axisW;
115  static const Vec axis[4];
116 
117 public:
120  /*
121  //Code Generator
122 
123  const int dim = 4;
124  char axes[] = {'x','y','z','w'};
125 
126  for (int i = 0; i < dim; ++i)
127  {
128  for (int j = 0; j < dim; ++j)
129  {
130  debug_print(sout() << "VecSwizCon2 " << axes[i] << axes[j]
131  << "() const { return VecSwizCon2("
132  << axes[i] << "," << axes[j] << "); }" << endl);
133 
134  for (int k = 0; k < dim; ++k)
135  {
136  debug_print(sout() << "VecSwizCon3 " << axes[i] << axes[j] << axes[k]
137  << "() const { return VecSwizCon3("
138  << axes[i] << "," << axes[j] << "," << axes[k] << "); }" << endl);
139 
140  for (int l = 0; l < dim; ++l)
141  {
142  debug_print(sout() << "VecSwizCon4 " << axes[i] << axes[j] << axes[k] << axes[l]
143  << "() const { return VecSwizCon4("
144  << axes[i] << "," << axes[j] << "," << axes[k] << "," << axes[l] << "); }" << endl);
145  }
146  }
147  }
148  }
149  */
150 
151  VecSwizCon2 xx() const { return VecSwizCon2(x,x); }
152  VecSwizCon3 xxx() const { return VecSwizCon3(x,x,x); }
153  VecSwizCon4 xxxx() const { return VecSwizCon4(x,x,x,x); }
154  VecSwizCon4 xxxy() const { return VecSwizCon4(x,x,x,y); }
155  VecSwizCon4 xxxz() const { return VecSwizCon4(x,x,x,z); }
156  VecSwizCon4 xxxw() const { return VecSwizCon4(x,x,x,w); }
157  VecSwizCon3 xxy() const { return VecSwizCon3(x,x,y); }
158  VecSwizCon4 xxyx() const { return VecSwizCon4(x,x,y,x); }
159  VecSwizCon4 xxyy() const { return VecSwizCon4(x,x,y,y); }
160  VecSwizCon4 xxyz() const { return VecSwizCon4(x,x,y,z); }
161  VecSwizCon4 xxyw() const { return VecSwizCon4(x,x,y,w); }
162  VecSwizCon3 xxz() const { return VecSwizCon3(x,x,z); }
163  VecSwizCon4 xxzx() const { return VecSwizCon4(x,x,z,x); }
164  VecSwizCon4 xxzy() const { return VecSwizCon4(x,x,z,y); }
165  VecSwizCon4 xxzz() const { return VecSwizCon4(x,x,z,z); }
166  VecSwizCon4 xxzw() const { return VecSwizCon4(x,x,z,w); }
167  VecSwizCon3 xxw() const { return VecSwizCon3(x,x,w); }
168  VecSwizCon4 xxwx() const { return VecSwizCon4(x,x,w,x); }
169  VecSwizCon4 xxwy() const { return VecSwizCon4(x,x,w,y); }
170  VecSwizCon4 xxwz() const { return VecSwizCon4(x,x,w,z); }
171  VecSwizCon4 xxww() const { return VecSwizCon4(x,x,w,w); }
172  VecSwizCon2 xy() const { return VecSwizCon2(x,y); }
173  VecSwizCon3 xyx() const { return VecSwizCon3(x,y,x); }
174  VecSwizCon4 xyxx() const { return VecSwizCon4(x,y,x,x); }
175  VecSwizCon4 xyxy() const { return VecSwizCon4(x,y,x,y); }
176  VecSwizCon4 xyxz() const { return VecSwizCon4(x,y,x,z); }
177  VecSwizCon4 xyxw() const { return VecSwizCon4(x,y,x,w); }
178  VecSwizCon3 xyy() const { return VecSwizCon3(x,y,y); }
179  VecSwizCon4 xyyx() const { return VecSwizCon4(x,y,y,x); }
180  VecSwizCon4 xyyy() const { return VecSwizCon4(x,y,y,y); }
181  VecSwizCon4 xyyz() const { return VecSwizCon4(x,y,y,z); }
182  VecSwizCon4 xyyw() const { return VecSwizCon4(x,y,y,w); }
183  VecSwizCon3 xyz() const { return VecSwizCon3(x,y,z); }
184  VecSwizCon4 xyzx() const { return VecSwizCon4(x,y,z,x); }
185  VecSwizCon4 xyzy() const { return VecSwizCon4(x,y,z,y); }
186  VecSwizCon4 xyzz() const { return VecSwizCon4(x,y,z,z); }
187  VecSwizCon4 xyzw() const { return VecSwizCon4(x,y,z,w); }
188  VecSwizCon3 xyw() const { return VecSwizCon3(x,y,w); }
189  VecSwizCon4 xywx() const { return VecSwizCon4(x,y,w,x); }
190  VecSwizCon4 xywy() const { return VecSwizCon4(x,y,w,y); }
191  VecSwizCon4 xywz() const { return VecSwizCon4(x,y,w,z); }
192  VecSwizCon4 xyww() const { return VecSwizCon4(x,y,w,w); }
193  VecSwizCon2 xz() const { return VecSwizCon2(x,z); }
194  VecSwizCon3 xzx() const { return VecSwizCon3(x,z,x); }
195  VecSwizCon4 xzxx() const { return VecSwizCon4(x,z,x,x); }
196  VecSwizCon4 xzxy() const { return VecSwizCon4(x,z,x,y); }
197  VecSwizCon4 xzxz() const { return VecSwizCon4(x,z,x,z); }
198  VecSwizCon4 xzxw() const { return VecSwizCon4(x,z,x,w); }
199  VecSwizCon3 xzy() const { return VecSwizCon3(x,z,y); }
200  VecSwizCon4 xzyx() const { return VecSwizCon4(x,z,y,x); }
201  VecSwizCon4 xzyy() const { return VecSwizCon4(x,z,y,y); }
202  VecSwizCon4 xzyz() const { return VecSwizCon4(x,z,y,z); }
203  VecSwizCon4 xzyw() const { return VecSwizCon4(x,z,y,w); }
204  VecSwizCon3 xzz() const { return VecSwizCon3(x,z,z); }
205  VecSwizCon4 xzzx() const { return VecSwizCon4(x,z,z,x); }
206  VecSwizCon4 xzzy() const { return VecSwizCon4(x,z,z,y); }
207  VecSwizCon4 xzzz() const { return VecSwizCon4(x,z,z,z); }
208  VecSwizCon4 xzzw() const { return VecSwizCon4(x,z,z,w); }
209  VecSwizCon3 xzw() const { return VecSwizCon3(x,z,w); }
210  VecSwizCon4 xzwx() const { return VecSwizCon4(x,z,w,x); }
211  VecSwizCon4 xzwy() const { return VecSwizCon4(x,z,w,y); }
212  VecSwizCon4 xzwz() const { return VecSwizCon4(x,z,w,z); }
213  VecSwizCon4 xzww() const { return VecSwizCon4(x,z,w,w); }
214  VecSwizCon2 xw() const { return VecSwizCon2(x,w); }
215  VecSwizCon3 xwx() const { return VecSwizCon3(x,w,x); }
216  VecSwizCon4 xwxx() const { return VecSwizCon4(x,w,x,x); }
217  VecSwizCon4 xwxy() const { return VecSwizCon4(x,w,x,y); }
218  VecSwizCon4 xwxz() const { return VecSwizCon4(x,w,x,z); }
219  VecSwizCon4 xwxw() const { return VecSwizCon4(x,w,x,w); }
220  VecSwizCon3 xwy() const { return VecSwizCon3(x,w,y); }
221  VecSwizCon4 xwyx() const { return VecSwizCon4(x,w,y,x); }
222  VecSwizCon4 xwyy() const { return VecSwizCon4(x,w,y,y); }
223  VecSwizCon4 xwyz() const { return VecSwizCon4(x,w,y,z); }
224  VecSwizCon4 xwyw() const { return VecSwizCon4(x,w,y,w); }
225  VecSwizCon3 xwz() const { return VecSwizCon3(x,w,z); }
226  VecSwizCon4 xwzx() const { return VecSwizCon4(x,w,z,x); }
227  VecSwizCon4 xwzy() const { return VecSwizCon4(x,w,z,y); }
228  VecSwizCon4 xwzz() const { return VecSwizCon4(x,w,z,z); }
229  VecSwizCon4 xwzw() const { return VecSwizCon4(x,w,z,w); }
230  VecSwizCon3 xww() const { return VecSwizCon3(x,w,w); }
231  VecSwizCon4 xwwx() const { return VecSwizCon4(x,w,w,x); }
232  VecSwizCon4 xwwy() const { return VecSwizCon4(x,w,w,y); }
233  VecSwizCon4 xwwz() const { return VecSwizCon4(x,w,w,z); }
234  VecSwizCon4 xwww() const { return VecSwizCon4(x,w,w,w); }
235  VecSwizCon2 yx() const { return VecSwizCon2(y,x); }
236  VecSwizCon3 yxx() const { return VecSwizCon3(y,x,x); }
237  VecSwizCon4 yxxx() const { return VecSwizCon4(y,x,x,x); }
238  VecSwizCon4 yxxy() const { return VecSwizCon4(y,x,x,y); }
239  VecSwizCon4 yxxz() const { return VecSwizCon4(y,x,x,z); }
240  VecSwizCon4 yxxw() const { return VecSwizCon4(y,x,x,w); }
241  VecSwizCon3 yxy() const { return VecSwizCon3(y,x,y); }
242  VecSwizCon4 yxyx() const { return VecSwizCon4(y,x,y,x); }
243  VecSwizCon4 yxyy() const { return VecSwizCon4(y,x,y,y); }
244  VecSwizCon4 yxyz() const { return VecSwizCon4(y,x,y,z); }
245  VecSwizCon4 yxyw() const { return VecSwizCon4(y,x,y,w); }
246  VecSwizCon3 yxz() const { return VecSwizCon3(y,x,z); }
247  VecSwizCon4 yxzx() const { return VecSwizCon4(y,x,z,x); }
248  VecSwizCon4 yxzy() const { return VecSwizCon4(y,x,z,y); }
249  VecSwizCon4 yxzz() const { return VecSwizCon4(y,x,z,z); }
250  VecSwizCon4 yxzw() const { return VecSwizCon4(y,x,z,w); }
251  VecSwizCon3 yxw() const { return VecSwizCon3(y,x,w); }
252  VecSwizCon4 yxwx() const { return VecSwizCon4(y,x,w,x); }
253  VecSwizCon4 yxwy() const { return VecSwizCon4(y,x,w,y); }
254  VecSwizCon4 yxwz() const { return VecSwizCon4(y,x,w,z); }
255  VecSwizCon4 yxww() const { return VecSwizCon4(y,x,w,w); }
256  VecSwizCon2 yy() const { return VecSwizCon2(y,y); }
257  VecSwizCon3 yyx() const { return VecSwizCon3(y,y,x); }
258  VecSwizCon4 yyxx() const { return VecSwizCon4(y,y,x,x); }
259  VecSwizCon4 yyxy() const { return VecSwizCon4(y,y,x,y); }
260  VecSwizCon4 yyxz() const { return VecSwizCon4(y,y,x,z); }
261  VecSwizCon4 yyxw() const { return VecSwizCon4(y,y,x,w); }
262  VecSwizCon3 yyy() const { return VecSwizCon3(y,y,y); }
263  VecSwizCon4 yyyx() const { return VecSwizCon4(y,y,y,x); }
264  VecSwizCon4 yyyy() const { return VecSwizCon4(y,y,y,y); }
265  VecSwizCon4 yyyz() const { return VecSwizCon4(y,y,y,z); }
266  VecSwizCon4 yyyw() const { return VecSwizCon4(y,y,y,w); }
267  VecSwizCon3 yyz() const { return VecSwizCon3(y,y,z); }
268  VecSwizCon4 yyzx() const { return VecSwizCon4(y,y,z,x); }
269  VecSwizCon4 yyzy() const { return VecSwizCon4(y,y,z,y); }
270  VecSwizCon4 yyzz() const { return VecSwizCon4(y,y,z,z); }
271  VecSwizCon4 yyzw() const { return VecSwizCon4(y,y,z,w); }
272  VecSwizCon3 yyw() const { return VecSwizCon3(y,y,w); }
273  VecSwizCon4 yywx() const { return VecSwizCon4(y,y,w,x); }
274  VecSwizCon4 yywy() const { return VecSwizCon4(y,y,w,y); }
275  VecSwizCon4 yywz() const { return VecSwizCon4(y,y,w,z); }
276  VecSwizCon4 yyww() const { return VecSwizCon4(y,y,w,w); }
277  VecSwizCon2 yz() const { return VecSwizCon2(y,z); }
278  VecSwizCon3 yzx() const { return VecSwizCon3(y,z,x); }
279  VecSwizCon4 yzxx() const { return VecSwizCon4(y,z,x,x); }
280  VecSwizCon4 yzxy() const { return VecSwizCon4(y,z,x,y); }
281  VecSwizCon4 yzxz() const { return VecSwizCon4(y,z,x,z); }
282  VecSwizCon4 yzxw() const { return VecSwizCon4(y,z,x,w); }
283  VecSwizCon3 yzy() const { return VecSwizCon3(y,z,y); }
284  VecSwizCon4 yzyx() const { return VecSwizCon4(y,z,y,x); }
285  VecSwizCon4 yzyy() const { return VecSwizCon4(y,z,y,y); }
286  VecSwizCon4 yzyz() const { return VecSwizCon4(y,z,y,z); }
287  VecSwizCon4 yzyw() const { return VecSwizCon4(y,z,y,w); }
288  VecSwizCon3 yzz() const { return VecSwizCon3(y,z,z); }
289  VecSwizCon4 yzzx() const { return VecSwizCon4(y,z,z,x); }
290  VecSwizCon4 yzzy() const { return VecSwizCon4(y,z,z,y); }
291  VecSwizCon4 yzzz() const { return VecSwizCon4(y,z,z,z); }
292  VecSwizCon4 yzzw() const { return VecSwizCon4(y,z,z,w); }
293  VecSwizCon3 yzw() const { return VecSwizCon3(y,z,w); }
294  VecSwizCon4 yzwx() const { return VecSwizCon4(y,z,w,x); }
295  VecSwizCon4 yzwy() const { return VecSwizCon4(y,z,w,y); }
296  VecSwizCon4 yzwz() const { return VecSwizCon4(y,z,w,z); }
297  VecSwizCon4 yzww() const { return VecSwizCon4(y,z,w,w); }
298  VecSwizCon2 yw() const { return VecSwizCon2(y,w); }
299  VecSwizCon3 ywx() const { return VecSwizCon3(y,w,x); }
300  VecSwizCon4 ywxx() const { return VecSwizCon4(y,w,x,x); }
301  VecSwizCon4 ywxy() const { return VecSwizCon4(y,w,x,y); }
302  VecSwizCon4 ywxz() const { return VecSwizCon4(y,w,x,z); }
303  VecSwizCon4 ywxw() const { return VecSwizCon4(y,w,x,w); }
304  VecSwizCon3 ywy() const { return VecSwizCon3(y,w,y); }
305  VecSwizCon4 ywyx() const { return VecSwizCon4(y,w,y,x); }
306  VecSwizCon4 ywyy() const { return VecSwizCon4(y,w,y,y); }
307  VecSwizCon4 ywyz() const { return VecSwizCon4(y,w,y,z); }
308  VecSwizCon4 ywyw() const { return VecSwizCon4(y,w,y,w); }
309  VecSwizCon3 ywz() const { return VecSwizCon3(y,w,z); }
310  VecSwizCon4 ywzx() const { return VecSwizCon4(y,w,z,x); }
311  VecSwizCon4 ywzy() const { return VecSwizCon4(y,w,z,y); }
312  VecSwizCon4 ywzz() const { return VecSwizCon4(y,w,z,z); }
313  VecSwizCon4 ywzw() const { return VecSwizCon4(y,w,z,w); }
314  VecSwizCon3 yww() const { return VecSwizCon3(y,w,w); }
315  VecSwizCon4 ywwx() const { return VecSwizCon4(y,w,w,x); }
316  VecSwizCon4 ywwy() const { return VecSwizCon4(y,w,w,y); }
317  VecSwizCon4 ywwz() const { return VecSwizCon4(y,w,w,z); }
318  VecSwizCon4 ywww() const { return VecSwizCon4(y,w,w,w); }
319  VecSwizCon2 zx() const { return VecSwizCon2(z,x); }
320  VecSwizCon3 zxx() const { return VecSwizCon3(z,x,x); }
321  VecSwizCon4 zxxx() const { return VecSwizCon4(z,x,x,x); }
322  VecSwizCon4 zxxy() const { return VecSwizCon4(z,x,x,y); }
323  VecSwizCon4 zxxz() const { return VecSwizCon4(z,x,x,z); }
324  VecSwizCon4 zxxw() const { return VecSwizCon4(z,x,x,w); }
325  VecSwizCon3 zxy() const { return VecSwizCon3(z,x,y); }
326  VecSwizCon4 zxyx() const { return VecSwizCon4(z,x,y,x); }
327  VecSwizCon4 zxyy() const { return VecSwizCon4(z,x,y,y); }
328  VecSwizCon4 zxyz() const { return VecSwizCon4(z,x,y,z); }
329  VecSwizCon4 zxyw() const { return VecSwizCon4(z,x,y,w); }
330  VecSwizCon3 zxz() const { return VecSwizCon3(z,x,z); }
331  VecSwizCon4 zxzx() const { return VecSwizCon4(z,x,z,x); }
332  VecSwizCon4 zxzy() const { return VecSwizCon4(z,x,z,y); }
333  VecSwizCon4 zxzz() const { return VecSwizCon4(z,x,z,z); }
334  VecSwizCon4 zxzw() const { return VecSwizCon4(z,x,z,w); }
335  VecSwizCon3 zxw() const { return VecSwizCon3(z,x,w); }
336  VecSwizCon4 zxwx() const { return VecSwizCon4(z,x,w,x); }
337  VecSwizCon4 zxwy() const { return VecSwizCon4(z,x,w,y); }
338  VecSwizCon4 zxwz() const { return VecSwizCon4(z,x,w,z); }
339  VecSwizCon4 zxww() const { return VecSwizCon4(z,x,w,w); }
340  VecSwizCon2 zy() const { return VecSwizCon2(z,y); }
341  VecSwizCon3 zyx() const { return VecSwizCon3(z,y,x); }
342  VecSwizCon4 zyxx() const { return VecSwizCon4(z,y,x,x); }
343  VecSwizCon4 zyxy() const { return VecSwizCon4(z,y,x,y); }
344  VecSwizCon4 zyxz() const { return VecSwizCon4(z,y,x,z); }
345  VecSwizCon4 zyxw() const { return VecSwizCon4(z,y,x,w); }
346  VecSwizCon3 zyy() const { return VecSwizCon3(z,y,y); }
347  VecSwizCon4 zyyx() const { return VecSwizCon4(z,y,y,x); }
348  VecSwizCon4 zyyy() const { return VecSwizCon4(z,y,y,y); }
349  VecSwizCon4 zyyz() const { return VecSwizCon4(z,y,y,z); }
350  VecSwizCon4 zyyw() const { return VecSwizCon4(z,y,y,w); }
351  VecSwizCon3 zyz() const { return VecSwizCon3(z,y,z); }
352  VecSwizCon4 zyzx() const { return VecSwizCon4(z,y,z,x); }
353  VecSwizCon4 zyzy() const { return VecSwizCon4(z,y,z,y); }
354  VecSwizCon4 zyzz() const { return VecSwizCon4(z,y,z,z); }
355  VecSwizCon4 zyzw() const { return VecSwizCon4(z,y,z,w); }
356  VecSwizCon3 zyw() const { return VecSwizCon3(z,y,w); }
357  VecSwizCon4 zywx() const { return VecSwizCon4(z,y,w,x); }
358  VecSwizCon4 zywy() const { return VecSwizCon4(z,y,w,y); }
359  VecSwizCon4 zywz() const { return VecSwizCon4(z,y,w,z); }
360  VecSwizCon4 zyww() const { return VecSwizCon4(z,y,w,w); }
361  VecSwizCon2 zz() const { return VecSwizCon2(z,z); }
362  VecSwizCon3 zzx() const { return VecSwizCon3(z,z,x); }
363  VecSwizCon4 zzxx() const { return VecSwizCon4(z,z,x,x); }
364  VecSwizCon4 zzxy() const { return VecSwizCon4(z,z,x,y); }
365  VecSwizCon4 zzxz() const { return VecSwizCon4(z,z,x,z); }
366  VecSwizCon4 zzxw() const { return VecSwizCon4(z,z,x,w); }
367  VecSwizCon3 zzy() const { return VecSwizCon3(z,z,y); }
368  VecSwizCon4 zzyx() const { return VecSwizCon4(z,z,y,x); }
369  VecSwizCon4 zzyy() const { return VecSwizCon4(z,z,y,y); }
370  VecSwizCon4 zzyz() const { return VecSwizCon4(z,z,y,z); }
371  VecSwizCon4 zzyw() const { return VecSwizCon4(z,z,y,w); }
372  VecSwizCon3 zzz() const { return VecSwizCon3(z,z,z); }
373  VecSwizCon4 zzzx() const { return VecSwizCon4(z,z,z,x); }
374  VecSwizCon4 zzzy() const { return VecSwizCon4(z,z,z,y); }
375  VecSwizCon4 zzzz() const { return VecSwizCon4(z,z,z,z); }
376  VecSwizCon4 zzzw() const { return VecSwizCon4(z,z,z,w); }
377  VecSwizCon3 zzw() const { return VecSwizCon3(z,z,w); }
378  VecSwizCon4 zzwx() const { return VecSwizCon4(z,z,w,x); }
379  VecSwizCon4 zzwy() const { return VecSwizCon4(z,z,w,y); }
380  VecSwizCon4 zzwz() const { return VecSwizCon4(z,z,w,z); }
381  VecSwizCon4 zzww() const { return VecSwizCon4(z,z,w,w); }
382  VecSwizCon2 zw() const { return VecSwizCon2(z,w); }
383  VecSwizCon3 zwx() const { return VecSwizCon3(z,w,x); }
384  VecSwizCon4 zwxx() const { return VecSwizCon4(z,w,x,x); }
385  VecSwizCon4 zwxy() const { return VecSwizCon4(z,w,x,y); }
386  VecSwizCon4 zwxz() const { return VecSwizCon4(z,w,x,z); }
387  VecSwizCon4 zwxw() const { return VecSwizCon4(z,w,x,w); }
388  VecSwizCon3 zwy() const { return VecSwizCon3(z,w,y); }
389  VecSwizCon4 zwyx() const { return VecSwizCon4(z,w,y,x); }
390  VecSwizCon4 zwyy() const { return VecSwizCon4(z,w,y,y); }
391  VecSwizCon4 zwyz() const { return VecSwizCon4(z,w,y,z); }
392  VecSwizCon4 zwyw() const { return VecSwizCon4(z,w,y,w); }
393  VecSwizCon3 zwz() const { return VecSwizCon3(z,w,z); }
394  VecSwizCon4 zwzx() const { return VecSwizCon4(z,w,z,x); }
395  VecSwizCon4 zwzy() const { return VecSwizCon4(z,w,z,y); }
396  VecSwizCon4 zwzz() const { return VecSwizCon4(z,w,z,z); }
397  VecSwizCon4 zwzw() const { return VecSwizCon4(z,w,z,w); }
398  VecSwizCon3 zww() const { return VecSwizCon3(z,w,w); }
399  VecSwizCon4 zwwx() const { return VecSwizCon4(z,w,w,x); }
400  VecSwizCon4 zwwy() const { return VecSwizCon4(z,w,w,y); }
401  VecSwizCon4 zwwz() const { return VecSwizCon4(z,w,w,z); }
402  VecSwizCon4 zwww() const { return VecSwizCon4(z,w,w,w); }
403  VecSwizCon2 wx() const { return VecSwizCon2(w,x); }
404  VecSwizCon3 wxx() const { return VecSwizCon3(w,x,x); }
405  VecSwizCon4 wxxx() const { return VecSwizCon4(w,x,x,x); }
406  VecSwizCon4 wxxy() const { return VecSwizCon4(w,x,x,y); }
407  VecSwizCon4 wxxz() const { return VecSwizCon4(w,x,x,z); }
408  VecSwizCon4 wxxw() const { return VecSwizCon4(w,x,x,w); }
409  VecSwizCon3 wxy() const { return VecSwizCon3(w,x,y); }
410  VecSwizCon4 wxyx() const { return VecSwizCon4(w,x,y,x); }
411  VecSwizCon4 wxyy() const { return VecSwizCon4(w,x,y,y); }
412  VecSwizCon4 wxyz() const { return VecSwizCon4(w,x,y,z); }
413  VecSwizCon4 wxyw() const { return VecSwizCon4(w,x,y,w); }
414  VecSwizCon3 wxz() const { return VecSwizCon3(w,x,z); }
415  VecSwizCon4 wxzx() const { return VecSwizCon4(w,x,z,x); }
416  VecSwizCon4 wxzy() const { return VecSwizCon4(w,x,z,y); }
417  VecSwizCon4 wxzz() const { return VecSwizCon4(w,x,z,z); }
418  VecSwizCon4 wxzw() const { return VecSwizCon4(w,x,z,w); }
419  VecSwizCon3 wxw() const { return VecSwizCon3(w,x,w); }
420  VecSwizCon4 wxwx() const { return VecSwizCon4(w,x,w,x); }
421  VecSwizCon4 wxwy() const { return VecSwizCon4(w,x,w,y); }
422  VecSwizCon4 wxwz() const { return VecSwizCon4(w,x,w,z); }
423  VecSwizCon4 wxww() const { return VecSwizCon4(w,x,w,w); }
424  VecSwizCon2 wy() const { return VecSwizCon2(w,y); }
425  VecSwizCon3 wyx() const { return VecSwizCon3(w,y,x); }
426  VecSwizCon4 wyxx() const { return VecSwizCon4(w,y,x,x); }
427  VecSwizCon4 wyxy() const { return VecSwizCon4(w,y,x,y); }
428  VecSwizCon4 wyxz() const { return VecSwizCon4(w,y,x,z); }
429  VecSwizCon4 wyxw() const { return VecSwizCon4(w,y,x,w); }
430  VecSwizCon3 wyy() const { return VecSwizCon3(w,y,y); }
431  VecSwizCon4 wyyx() const { return VecSwizCon4(w,y,y,x); }
432  VecSwizCon4 wyyy() const { return VecSwizCon4(w,y,y,y); }
433  VecSwizCon4 wyyz() const { return VecSwizCon4(w,y,y,z); }
434  VecSwizCon4 wyyw() const { return VecSwizCon4(w,y,y,w); }
435  VecSwizCon3 wyz() const { return VecSwizCon3(w,y,z); }
436  VecSwizCon4 wyzx() const { return VecSwizCon4(w,y,z,x); }
437  VecSwizCon4 wyzy() const { return VecSwizCon4(w,y,z,y); }
438  VecSwizCon4 wyzz() const { return VecSwizCon4(w,y,z,z); }
439  VecSwizCon4 wyzw() const { return VecSwizCon4(w,y,z,w); }
440  VecSwizCon3 wyw() const { return VecSwizCon3(w,y,w); }
441  VecSwizCon4 wywx() const { return VecSwizCon4(w,y,w,x); }
442  VecSwizCon4 wywy() const { return VecSwizCon4(w,y,w,y); }
443  VecSwizCon4 wywz() const { return VecSwizCon4(w,y,w,z); }
444  VecSwizCon4 wyww() const { return VecSwizCon4(w,y,w,w); }
445  VecSwizCon2 wz() const { return VecSwizCon2(w,z); }
446  VecSwizCon3 wzx() const { return VecSwizCon3(w,z,x); }
447  VecSwizCon4 wzxx() const { return VecSwizCon4(w,z,x,x); }
448  VecSwizCon4 wzxy() const { return VecSwizCon4(w,z,x,y); }
449  VecSwizCon4 wzxz() const { return VecSwizCon4(w,z,x,z); }
450  VecSwizCon4 wzxw() const { return VecSwizCon4(w,z,x,w); }
451  VecSwizCon3 wzy() const { return VecSwizCon3(w,z,y); }
452  VecSwizCon4 wzyx() const { return VecSwizCon4(w,z,y,x); }
453  VecSwizCon4 wzyy() const { return VecSwizCon4(w,z,y,y); }
454  VecSwizCon4 wzyz() const { return VecSwizCon4(w,z,y,z); }
455  VecSwizCon4 wzyw() const { return VecSwizCon4(w,z,y,w); }
456  VecSwizCon3 wzz() const { return VecSwizCon3(w,z,z); }
457  VecSwizCon4 wzzx() const { return VecSwizCon4(w,z,z,x); }
458  VecSwizCon4 wzzy() const { return VecSwizCon4(w,z,z,y); }
459  VecSwizCon4 wzzz() const { return VecSwizCon4(w,z,z,z); }
460  VecSwizCon4 wzzw() const { return VecSwizCon4(w,z,z,w); }
461  VecSwizCon3 wzw() const { return VecSwizCon3(w,z,w); }
462  VecSwizCon4 wzwx() const { return VecSwizCon4(w,z,w,x); }
463  VecSwizCon4 wzwy() const { return VecSwizCon4(w,z,w,y); }
464  VecSwizCon4 wzwz() const { return VecSwizCon4(w,z,w,z); }
465  VecSwizCon4 wzww() const { return VecSwizCon4(w,z,w,w); }
466  VecSwizCon2 ww() const { return VecSwizCon2(w,w); }
467  VecSwizCon3 wwx() const { return VecSwizCon3(w,w,x); }
468  VecSwizCon4 wwxx() const { return VecSwizCon4(w,w,x,x); }
469  VecSwizCon4 wwxy() const { return VecSwizCon4(w,w,x,y); }
470  VecSwizCon4 wwxz() const { return VecSwizCon4(w,w,x,z); }
471  VecSwizCon4 wwxw() const { return VecSwizCon4(w,w,x,w); }
472  VecSwizCon3 wwy() const { return VecSwizCon3(w,w,y); }
473  VecSwizCon4 wwyx() const { return VecSwizCon4(w,w,y,x); }
474  VecSwizCon4 wwyy() const { return VecSwizCon4(w,w,y,y); }
475  VecSwizCon4 wwyz() const { return VecSwizCon4(w,w,y,z); }
476  VecSwizCon4 wwyw() const { return VecSwizCon4(w,w,y,w); }
477  VecSwizCon3 wwz() const { return VecSwizCon3(w,w,z); }
478  VecSwizCon4 wwzx() const { return VecSwizCon4(w,w,z,x); }
479  VecSwizCon4 wwzy() const { return VecSwizCon4(w,w,z,y); }
480  VecSwizCon4 wwzz() const { return VecSwizCon4(w,w,z,z); }
481  VecSwizCon4 wwzw() const { return VecSwizCon4(w,w,z,w); }
482  VecSwizCon3 www() const { return VecSwizCon3(w,w,w); }
483  VecSwizCon4 wwwx() const { return VecSwizCon4(w,w,w,x); }
484  VecSwizCon4 wwwy() const { return VecSwizCon4(w,w,w,y); }
485  VecSwizCon4 wwwz() const { return VecSwizCon4(w,w,w,z); }
486  VecSwizCon4 wwww() const { return VecSwizCon4(w,w,w,w); }
488 
491  /*
492  //Code Generator
493 
494  const int dim = 4;
495  char axes[] = {'x','y','z','w'};
496  bool used[] = {false, false, false, false};
497 
498  for (int i = 0; i < dim; ++i)
499  {
500  used[i] = true;
501  for (int j = 0; j < dim; ++j)
502  {
503  if (used[j]) continue;
504  used[j] = true;
505 
506  debug_print(sout() << "VecSwizRef2 " << axes[i] << axes[j]
507  << "() { return VecSwizRef2("
508  << axes[i] << "," << axes[j] << "); }" << endl);
509 
510  for (int k = 0; k < dim; ++k)
511  {
512  if (used[k]) continue;
513  used[k] = true;
514 
515  debug_print(sout() << "VecSwizRef3 " << axes[i] << axes[j] << axes[k]
516  << "() { return VecSwizRef3("
517  << axes[i] << "," << axes[j] << "," << axes[k] << "); }" << endl);
518 
519  for (int l = 0; l < dim; ++l)
520  {
521  if (used[l]) continue;
522  debug_print(sout() << "VecSwizRef4 " << axes[i] << axes[j] << axes[k] << axes[l]
523  << "() { return VecSwizRef4("
524  << axes[i] << "," << axes[j] << "," << axes[k] << "," << axes[l] << "); }" << endl);
525  }
526 
527  used[k] = false;
528  }
529  used[j] = false;
530  }
531  used[i] = false;
532  }
533  */
534 
535  VecSwizRef2 xy() { return VecSwizRef2(x,y); }
536  VecSwizRef3 xyz() { return VecSwizRef3(x,y,z); }
537  VecSwizRef4 xyzw() { return VecSwizRef4(x,y,z,w); }
538  VecSwizRef3 xyw() { return VecSwizRef3(x,y,w); }
539  VecSwizRef4 xywz() { return VecSwizRef4(x,y,w,z); }
540  VecSwizRef2 xz() { return VecSwizRef2(x,z); }
541  VecSwizRef3 xzy() { return VecSwizRef3(x,z,y); }
542  VecSwizRef4 xzyw() { return VecSwizRef4(x,z,y,w); }
543  VecSwizRef3 xzw() { return VecSwizRef3(x,z,w); }
544  VecSwizRef4 xzwy() { return VecSwizRef4(x,z,w,y); }
545  VecSwizRef2 xw() { return VecSwizRef2(x,w); }
546  VecSwizRef3 xwy() { return VecSwizRef3(x,w,y); }
547  VecSwizRef4 xwyz() { return VecSwizRef4(x,w,y,z); }
548  VecSwizRef3 xwz() { return VecSwizRef3(x,w,z); }
549  VecSwizRef4 xwzy() { return VecSwizRef4(x,w,z,y); }
550  VecSwizRef2 yx() { return VecSwizRef2(y,x); }
551  VecSwizRef3 yxz() { return VecSwizRef3(y,x,z); }
552  VecSwizRef4 yxzw() { return VecSwizRef4(y,x,z,w); }
553  VecSwizRef3 yxw() { return VecSwizRef3(y,x,w); }
554  VecSwizRef4 yxwz() { return VecSwizRef4(y,x,w,z); }
555  VecSwizRef2 yz() { return VecSwizRef2(y,z); }
556  VecSwizRef3 yzx() { return VecSwizRef3(y,z,x); }
557  VecSwizRef4 yzxw() { return VecSwizRef4(y,z,x,w); }
558  VecSwizRef3 yzw() { return VecSwizRef3(y,z,w); }
559  VecSwizRef4 yzwx() { return VecSwizRef4(y,z,w,x); }
560  VecSwizRef2 yw() { return VecSwizRef2(y,w); }
561  VecSwizRef3 ywx() { return VecSwizRef3(y,w,x); }
562  VecSwizRef4 ywxz() { return VecSwizRef4(y,w,x,z); }
563  VecSwizRef3 ywz() { return VecSwizRef3(y,w,z); }
564  VecSwizRef4 ywzx() { return VecSwizRef4(y,w,z,x); }
565  VecSwizRef2 zx() { return VecSwizRef2(z,x); }
566  VecSwizRef3 zxy() { return VecSwizRef3(z,x,y); }
567  VecSwizRef4 zxyw() { return VecSwizRef4(z,x,y,w); }
568  VecSwizRef3 zxw() { return VecSwizRef3(z,x,w); }
569  VecSwizRef4 zxwy() { return VecSwizRef4(z,x,w,y); }
570  VecSwizRef2 zy() { return VecSwizRef2(z,y); }
571  VecSwizRef3 zyx() { return VecSwizRef3(z,y,x); }
572  VecSwizRef4 zyxw() { return VecSwizRef4(z,y,x,w); }
573  VecSwizRef3 zyw() { return VecSwizRef3(z,y,w); }
574  VecSwizRef4 zywx() { return VecSwizRef4(z,y,w,x); }
575  VecSwizRef2 zw() { return VecSwizRef2(z,w); }
576  VecSwizRef3 zwx() { return VecSwizRef3(z,w,x); }
577  VecSwizRef4 zwxy() { return VecSwizRef4(z,w,x,y); }
578  VecSwizRef3 zwy() { return VecSwizRef3(z,w,y); }
579  VecSwizRef4 zwyx() { return VecSwizRef4(z,w,y,x); }
580  VecSwizRef2 wx() { return VecSwizRef2(w,x); }
581  VecSwizRef3 wxy() { return VecSwizRef3(w,x,y); }
582  VecSwizRef4 wxyz() { return VecSwizRef4(w,x,y,z); }
583  VecSwizRef3 wxz() { return VecSwizRef3(w,x,z); }
584  VecSwizRef4 wxzy() { return VecSwizRef4(w,x,z,y); }
585  VecSwizRef2 wy() { return VecSwizRef2(w,y); }
586  VecSwizRef3 wyx() { return VecSwizRef3(w,y,x); }
587  VecSwizRef4 wyxz() { return VecSwizRef4(w,y,x,z); }
588  VecSwizRef3 wyz() { return VecSwizRef3(w,y,z); }
589  VecSwizRef4 wyzx() { return VecSwizRef4(w,y,z,x); }
590  VecSwizRef2 wz() { return VecSwizRef2(w,z); }
591  VecSwizRef3 wzx() { return VecSwizRef3(w,z,x); }
592  VecSwizRef4 wzxy() { return VecSwizRef4(w,z,x,y); }
593  VecSwizRef3 wzy() { return VecSwizRef3(w,z,y); }
594  VecSwizRef4 wzyx() { return VecSwizRef4(w,z,y,x); }
596 };
597 
598 template<class R, int O> const Vec<4,R,O> Vec<4,R,O>::zero (0);
599 template<class R, int O> const Vec<4,R,O> Vec<4,R,O>::one (1);
600 template<class R, int O> const Vec<4,R,O> Vec<4,R,O>::axisX (1, 0, 0, 0);
601 template<class R, int O> const Vec<4,R,O> Vec<4,R,O>::axisY (0, 1, 0, 0);
602 template<class R, int O> const Vec<4,R,O> Vec<4,R,O>::axisZ (0, 0, 1, 0);
603 template<class R, int O> const Vec<4,R,O> Vec<4,R,O>::axisW (0, 0, 0, 1);
604 template<class R, int O> const Vec<4,R,O> Vec<4,R,O>::axis[4] = { axisX, axisY, axisZ, axisW };
605 
607 template<class R, int Opt>
610 struct priv::map_impl<Vec<4,R,Opt>, Vec<4,R,Opt>>
611 {
612  template<class T, class O, class Func>
613  static O&& func(T&& v, O&& o, Func&& f) { o.x = f(v.x); o.y = f(v.y); o.z = f(v.z); o.w = f(v.w); return forward<O>(o); }
614 };
615 
616 template<class R, int Opt>
617 struct priv::map_impl<Vec<4,R,Opt>, Vec<4,R,Opt>, Vec<4,R,Opt>>
618 {
619  template<class T, class T2, class O, class Func>
620  static O&& func(T&& v, T2&& rhs, O&& o, Func&& f) { o.x = f(v.x,rhs.x); o.y = f(v.y,rhs.y); o.z = f(v.z,rhs.z); o.w = f(v.w,rhs.w); return forward<O>(o); }
621 };
622 
623 template<class R, int O, class Accum_>
624 struct priv::reduce_impl<Vec<4,R,O>, Accum_>
625 {
626  template<class T, class Accum, class Func>
627  static Accum_ func(T&& v, Accum&& initVal, Func&& f) { return f(f(f(f(forward<Accum>(initVal), v.x), v.y), v.z), v.w); }
628 };
629 
630 template<class R, int O, class Accum_>
631 struct priv::reduce_impl<Vec<4,R,O>, Accum_, Vec<4,R,O>>
632 {
633  template<class T, class T2, class Accum, class Func>
634  static Accum_ func(T&& v, T2&& rhs, Accum&& initVal, Func&& f) { return f(f(f(f(forward<Accum>(initVal), v.x, rhs.x), v.y, rhs.y), v.z, rhs.z), v.w, rhs.w); }
635 };
637 
639 template<class Real, int Options>
641 class VecSwizCon<4,Real,Options> : public VecSwizConBase<VecSwizCon<4,Real,Options>>
642 {
643 public:
644  VecSwizCon(Real x, Real y, Real z, Real w) { this->x = x; this->y = y; this->z = z; this->w = w; }
645 };
646 
648 template<class Real, int Options>
649 class VecSwizRef<4,Real,Options> : public VecSwizRefBase<VecSwizRef<4,Real,Options>>
650 {
651  template<class> friend class VecSwizRefBase;
652 public:
654  using Super::operator=;
655  using Super::x;
656  using Super::y;
657  using Super::z;
658  using Super::w;
659 
660  VecSwizRef(Real& x, Real& y, Real& z, Real& w) : rx(x), ry(y), rz(z), rw(w) { this->x = x; this->y = y; this->z = z; this->w = w; }
661 
662  VecSwizRef& commit() { rx = x; ry = y; rz = z; rw = w; return *this; }
663 
664 private:
666  Real& rx;
667  Real& ry;
668  Real& rz;
669  Real& rw;
670 };
671 
672 
674 typedef Vec<4> Vec4;
677 
682 
683 }
684 
685 #include "Honey/Math/Alge/Vec/platform/Vec4.h"
MatrixS & fromScalar(Real f)
Initialize with scalar in every element.
Definition: Base.h:72
VecSwizCon3 zyw() const
Definition: Vec4.h:356
#define ALIGN(Bytes)
Align stuct.
Definition: Core.h:39
VecSwizCon4 xxwz() const
Definition: Vec4.h:170
VecSwizCon4 zxwy() const
Definition: Vec4.h:337
VecSwizRef4 wxyz()
Definition: Vec4.h:582
VecSwizCon4 wxwz() const
Definition: Vec4.h:422
VecSwizCon3 zwx() const
Definition: Vec4.h:383
VecSwizCon4 wwzx() const
Definition: Vec4.h:478
VecSwizCon3 xwz() const
Definition: Vec4.h:225
VecSwizCon3 wzz() const
Definition: Vec4.h:456
VecSwizCon4 xwww() const
Definition: Vec4.h:234
VecSwizCon4 yxxy() const
Definition: Vec4.h:238
VecSwizCon4 wzww() const
Definition: Vec4.h:465
VecSwizRef3 wyz()
Definition: Vec4.h:588
VecSwizCon4 xxzz() const
Definition: Vec4.h:165
VecSwizCon4 wzyx() const
Definition: Vec4.h:452
VecSwizCon4 zwww() const
Definition: Vec4.h:402
VecSwizCon4 xzzw() const
Definition: Vec4.h:208
Vec4 cross(const Vec4 &v1, const Vec4 &v2) const
4D vector cross product
Definition: Vec4.h:98
Automatic (stack-compatible) vector storage that allows direct access to dimension fields...
Definition: Storage.h:13
VecSwizCon3 xwx() const
Definition: Vec4.h:215
VecBase & operator=(const MatrixBase< T > &rhs)
Assign to row or column vector of any dimension. Asserts that if this vector has a fixed dimension th...
Definition: Base.h:35
VecSwizRef3 xyz()
Definition: Vec4.h:536
VecSwizCon3 zzx() const
Definition: Vec4.h:362
VecSwizCon4 xzww() const
Definition: Vec4.h:213
void storageFillZero(StorageBlock< T > &store)
Fill block storage with zeros.
Definition: Block.h:136
VecSwizRef4 wyxz()
Definition: Vec4.h:587
VecSwizCon4 xyxz() const
Definition: Vec4.h:176
VecSwizCon3 xzy() const
Definition: Vec4.h:199
VecSwizCon3 yyz() const
Definition: Vec4.h:267
VecSwizCon4 wzzx() const
Definition: Vec4.h:457
VecSwizCon4 wwzz() const
Definition: Vec4.h:480
Vec< 4, Double, matrix::Option::vecRow > VecRow4_d
Definition: Vec4.h:681
VecSwizCon4 xzyz() const
Definition: Vec4.h:202
VecSwizCon4 zwyy() const
Definition: Vec4.h:390
Vec()
No init.
Definition: Vec4.h:76
VecSwizRef4 ywxz()
Definition: Vec4.h:562
VecSwizCon3 xwy() const
Definition: Vec4.h:220
VecSwizCon4 yywx() const
Definition: Vec4.h:273
VecSwizCon4 zwzz() const
Definition: Vec4.h:396
VecSwizCon4 yzzx() const
Definition: Vec4.h:289
VecSwizCon4 yxzz() const
Definition: Vec4.h:249
VecSwizCon4 wxzx() const
Definition: Vec4.h:415
N-dimensional vector traits.
Definition: Vec.h:14
static const Vec one
Definition: Vec4.h:110
VecSwizCon4 zwxx() const
Definition: Vec4.h:384
VecSwizCon2 wy() const
Definition: Vec4.h:424
VecSwizCon4 zxww() const
Definition: Vec4.h:339
VecSwizCon3 yzy() const
Definition: Vec4.h:283
VecSwizRef2 zx()
Definition: Vec4.h:565
VecSwizRef3 xyw()
Definition: Vec4.h:538
VecSwizCon4 zzzx() const
Definition: Vec4.h:373
VecSwizRef3 yxz()
Definition: Vec4.h:551
VecSwizRef4 xwyz()
Definition: Vec4.h:547
VecSwizCon3 yyy() const
Definition: Vec4.h:262
VecSwizCon4 wxxw() const
Definition: Vec4.h:408
VecSwizCon4 ywzy() const
Definition: Vec4.h:311
VecSwizCon3 zxx() const
Definition: Vec4.h:320
VecSwizCon4 xxyw() const
Definition: Vec4.h:161
VecSwizCon4 xyyy() const
Definition: Vec4.h:180
VecSwizCon4 wywx() const
Definition: Vec4.h:441
vec::priv::StorageFields< Vec< 4, Real, Options > > Storage
Definition: Vec4.h:13
VecSwizCon4 yzzy() const
Definition: Vec4.h:290
Real dot(const VecBase< T > &v) const
Vector dot product.
Definition: Base.h:91
VecSwizCon4 xwzw() const
Definition: Vec4.h:229
VecSwizCon4 wxyz() const
Definition: Vec4.h:412
VecSwizCon4 wzwy() const
Definition: Vec4.h:463
VecSwizRef4 xwzy()
Definition: Vec4.h:549
VecSwizCon4 zwxw() const
Definition: Vec4.h:387
VecSwizCon4 xyxw() const
Definition: Vec4.h:177
VecSwizCon4 yxzx() const
Definition: Vec4.h:247
VecSwizCon4 wzyz() const
Definition: Vec4.h:454
VecSwizCon3 ywx() const
Definition: Vec4.h:299
VecSwizCon4 wwxz() const
Definition: Vec4.h:470
VecSwizCon4 zyzx() const
Definition: Vec4.h:352
VecSwizCon4 wyyw() const
Definition: Vec4.h:434
VecSwizCon3 wyy() const
Definition: Vec4.h:430
VecSwizCon3 yzx() const
Definition: Vec4.h:278
VecSwizCon4 xwxw() const
Definition: Vec4.h:219
VecSwizCon4 wyzx() const
Definition: Vec4.h:436
VecSwizCon2 wz() const
Definition: Vec4.h:445
VecSwizCon4 yxyx() const
Definition: Vec4.h:242
VecSwizCon4 xyxx() const
Definition: Vec4.h:174
VecSwizCon4 wwxx() const
Definition: Vec4.h:468
VecSwizCon4 wzzw() const
Definition: Vec4.h:460
VecSwizCon4 xwwy() const
Definition: Vec4.h:232
VecSwizCon4 yyxw() const
Definition: Vec4.h:261
VecSwizCon3 zzy() const
Definition: Vec4.h:367
VecSwizRef3 xzy()
Definition: Vec4.h:541
VecSwizCon4 xwxy() const
Definition: Vec4.h:217
VecSwizCon4 yyxy() const
Definition: Vec4.h:259
VecSwizCon4 zzyx() const
Definition: Vec4.h:368
VecSwizCon3 zzz() const
Definition: Vec4.h:372
VecSwizCon4 xzxy() const
Definition: Vec4.h:196
VecSwizCon4 yxwy() const
Definition: Vec4.h:253
VecSwizCon3 www() const
Definition: Vec4.h:482
VecSwizCon3 zxy() const
Definition: Vec4.h:325
VecSwizCon3 wzy() const
Definition: Vec4.h:451
VecSwizCon4 wxzy() const
Definition: Vec4.h:416
VecSwizCon4 zxyz() const
Definition: Vec4.h:328
VecSwizCon4 wwww() const
Definition: Vec4.h:486
VecSwizCon4 xzyx() const
Definition: Vec4.h:200
VecSwizRef3 xzw()
Definition: Vec4.h:543
Vec(const Vec2 &v, Real z=0, Real w=0)
Construct from 2D vector.
Definition: Vec4.h:81
VecSwizRef3 yzw()
Definition: Vec4.h:558
VecSwizCon4 xzwz() const
Definition: Vec4.h:212
VecSwizCon< 3, Real, Options > VecSwizCon3
Definition: Vec4.h:63
VecSwizCon4 yxzy() const
Definition: Vec4.h:248
bool storageEqual(const StorageBlock< T > &lhs, const StorageBlock< T2 > &rhs)
Test between block storages.
Definition: Block.h:157
VecSwizCon4 yzww() const
Definition: Vec4.h:297
VecSwizCon3 wyx() const
Definition: Vec4.h:425
VecSwizCon4 xxyx() const
Definition: Vec4.h:158
VecSwizRef3 zxw()
Definition: Vec4.h:568
VecSwizCon4 wxyx() const
Definition: Vec4.h:410
Vec(const Vec3 &v, Real w=1)
Construct from 3D vector.
Definition: Vec4.h:83
VecSwizCon4 xzwy() const
Definition: Vec4.h:211
VecSwizCon4 wwyz() const
Definition: Vec4.h:475
3D const swizzle vector
Definition: Vec3.h:326
VecSwizCon3 zyz() const
Definition: Vec4.h:351
VecSwizRef3 zyx()
Definition: Vec4.h:571
VecSwizCon4 xywz() const
Definition: Vec4.h:191
VecSwizCon4 ywyy() const
Definition: Vec4.h:306
VecSwizCon4 yywz() const
Definition: Vec4.h:275
Definition: Swiz.h:16
VecSwizRef2 xz()
Definition: Vec4.h:540
VecSwizCon4 yxwx() const
Definition: Vec4.h:252
VecSwizCon4 zxxx() const
Definition: Vec4.h:321
VecSwizCon4 zzxx() const
Definition: Vec4.h:363
VecSwizCon4 yyzz() const
Definition: Vec4.h:270
Vector for const swizzle operators.
Definition: Swiz.h:10
VecSwizCon4 wzxw() const
Definition: Vec4.h:450
VecSwizRef3 wxz()
Definition: Vec4.h:583
VecSwizCon3 ywz() const
Definition: Vec4.h:309
VecSwizCon3 wwx() const
Definition: Vec4.h:467
VecSwizCon4 xzzy() const
Definition: Vec4.h:206
VecSwizCon4 xxzy() const
Definition: Vec4.h:164
VecSwizCon4 xyww() const
Definition: Vec4.h:192
VecSwizRef4 wyzx()
Definition: Vec4.h:589
VecSwizCon3 xxw() const
Definition: Vec4.h:167
VecSwizCon4 wxyy() const
Definition: Vec4.h:411
VecSwizCon4 yyzx() const
Definition: Vec4.h:268
VecSwizCon4 wwzy() const
Definition: Vec4.h:479
2D const swizzle vector
Definition: Vec2.h:175
VecSwizRef4 ywzx()
Definition: Vec4.h:564
VecSwizCon4 wywz() const
Definition: Vec4.h:443
VecSwizCon4 xxxw() const
Definition: Vec4.h:156
VecSwizCon4 zzzy() const
Definition: Vec4.h:374
VecSwizCon4 wyyz() const
Definition: Vec4.h:433
VecSwizCon3 wyw() const
Definition: Vec4.h:440
VecSwizCon4 zzwz() const
Definition: Vec4.h:380
VecSwizCon4 ywzw() const
Definition: Vec4.h:313
VecSwizCon4 wxww() const
Definition: Vec4.h:423
VecSwizCon4 zyxz() const
Definition: Vec4.h:344
VecSwizCon4 yyyz() const
Definition: Vec4.h:265
VecSwizCon4 zyxx() const
Definition: Vec4.h:342
VecSwizCon4 yzxz() const
Definition: Vec4.h:281
VecSwizCon3 yxw() const
Definition: Vec4.h:251
VecSwizCon4 xwxz() const
Definition: Vec4.h:218
VecSwizCon2 yz() const
Definition: Vec4.h:277
VecSwizCon4 yzxw() const
Definition: Vec4.h:282
VecSwizCon4 zwwx() const
Definition: Vec4.h:399
VecSwizCon4 xyzy() const
Definition: Vec4.h:185
VecSwizCon2 wx() const
Definition: Vec4.h:403
VecSwizCon4 xxxy() const
Definition: Vec4.h:154
VecSwizCon4 wzyy() const
Definition: Vec4.h:453
VecSwizCon4 zzzw() const
Definition: Vec4.h:376
VecSwizCon4 xwwz() const
Definition: Vec4.h:233
VecSwizCon4 zzyz() const
Definition: Vec4.h:370
VecSwizCon2 zx() const
Definition: Vec4.h:319
VecSwizCon3 wwz() const
Definition: Vec4.h:477
VecSwizCon4 wxxy() const
Definition: Vec4.h:406
static const Vec axisW
Definition: Vec4.h:114
VecSwizCon3 wxz() const
Definition: Vec4.h:414
VecSwizRef3 wzy()
Definition: Vec4.h:593
VecSwizCon4 xwxx() const
Definition: Vec4.h:216
VecSwizCon3 zxz() const
Definition: Vec4.h:330
VecSwizCon4 zzzz() const
Definition: Vec4.h:375
VecSwizCon3 zzw() const
Definition: Vec4.h:377
VecSwizCon4 wyxz() const
Definition: Vec4.h:428
VecSwizCon4 zxxy() const
Definition: Vec4.h:322
Vec< 4 > Vec4
4D column vector types
Definition: Vec4.h:674
VecSwizCon4 wxxz() const
Definition: Vec4.h:407
VecSwizCon4 xxxz() const
Definition: Vec4.h:155
VecSwizCon4 wyww() const
Definition: Vec4.h:444
VecSwizRef4 xzyw()
Definition: Vec4.h:542
VecSwizCon4 wwwx() const
Definition: Vec4.h:483
VecSwizCon4 ywzx() const
Definition: Vec4.h:310
VecSwizCon2 xx() const
Definition: Vec4.h:151
VecSwizRef4 xyzw()
Definition: Vec4.h:537
VecSwizRef3 wzx()
Definition: Vec4.h:591
VecSwizRef4 wzxy()
Definition: Vec4.h:592
VecSwizCon3 yxz() const
Definition: Vec4.h:246
VecSwizCon4 xzzz() const
Definition: Vec4.h:207
VecSwizCon4 yxxx() const
Definition: Vec4.h:237
VecSwizRef2 zw()
Definition: Vec4.h:575
VecSwizCon4 xwwx() const
Definition: Vec4.h:231
VecSwizCon4 zwyw() const
Definition: Vec4.h:392
VecSwizCon4 wwyy() const
Definition: Vec4.h:474
VecSwizRef3 xwz()
Definition: Vec4.h:548
3D mutable swizzle vector
Definition: Vec3.h:334
VecSwizCon3 zyy() const
Definition: Vec4.h:346
VecSwizRef2 wy()
Definition: Vec4.h:585
VecSwizRef4 xzwy()
Definition: Vec4.h:544
VecSwizCon< 4, Real, Options > VecSwizCon4
Definition: Vec4.h:64
VecSwizCon3 wzw() const
Definition: Vec4.h:461
VecSwizRef4 zwxy()
Definition: Vec4.h:577
VecSwizCon4 yzyy() const
Definition: Vec4.h:285
VecSwizCon4 zxzy() const
Definition: Vec4.h:332
VecSwizRef4 zwyx()
Definition: Vec4.h:579
VecSwizCon4 xzxw() const
Definition: Vec4.h:198
VecSwizCon4 zywz() const
Definition: Vec4.h:359
VecSwizCon4 ywww() const
Definition: Vec4.h:318
VecSwizCon4 yzyx() const
Definition: Vec4.h:284
VecSwizRef3 ywx()
Definition: Vec4.h:561
VecSwizCon4 wzxy() const
Definition: Vec4.h:448
VecSwizRef4 wxzy()
Definition: Vec4.h:584
VecSwizCon4 zyxy() const
Definition: Vec4.h:343
VecSwizCon3 yxx() const
Definition: Vec4.h:236
VecSwizCon4 ywwx() const
Definition: Vec4.h:315
VecSwizRef3 zxy()
Definition: Vec4.h:566
VecSwizCon4 xyxy() const
Definition: Vec4.h:175
VecSwizRef3 yxw()
Definition: Vec4.h:553
VecSwizCon4 xzyw() const
Definition: Vec4.h:203
VecSwizCon4 wwxw() const
Definition: Vec4.h:471
Vec< 4, Float, matrix::Option::vecRow > VecRow4_f
Definition: Vec4.h:680
VecSwizCon4 wzyw() const
Definition: Vec4.h:455
VecSwizCon4 xxwx() const
Definition: Vec4.h:168
VecSwizCon4 xzxx() const
Definition: Vec4.h:195
VecSwizCon2 zw() const
Definition: Vec4.h:382
VecSwizRef< 4, Real, Options > VecSwizRef4
Definition: Vec4.h:67
VecSwizCon4 zzxy() const
Definition: Vec4.h:364
VecSwizCon4 wxzz() const
Definition: Vec4.h:417
VecSwizCon4 yxwz() const
Definition: Vec4.h:254
VecSwizCon3 zww() const
Definition: Vec4.h:398
N-dimensional vector.
Definition: Traits.h:12
VecSwizCon4 xwyx() const
Definition: Vec4.h:221
VecSwizCon4 wyxw() const
Definition: Vec4.h:429
VecSwizCon4 zzxz() const
Definition: Vec4.h:365
VecSwizCon4 xwzx() const
Definition: Vec4.h:226
VecSwizCon4 zzyy() const
Definition: Vec4.h:369
VecSwizRef< 3, Real, Options > VecSwizRef3
Definition: Vec4.h:66
VecSwizRef4 yxwz()
Definition: Vec4.h:554
Definition: Traits.h:20
VecSwizCon4 xyyx() const
Definition: Vec4.h:179
VecSwizCon4 wwyw() const
Definition: Vec4.h:476
VecSwizCon4 wyxy() const
Definition: Vec4.h:427
VecSwizCon3 xzz() const
Definition: Vec4.h:204
VecSwizCon4 wyyy() const
Definition: Vec4.h:432
VecSwizCon4 ywwz() const
Definition: Vec4.h:317
VecSwizCon4 yyww() const
Definition: Vec4.h:276
static const Vec axisX
Definition: Vec4.h:111
VecSwizCon4 xwyw() const
Definition: Vec4.h:224
VecSwizCon3 yzz() const
Definition: Vec4.h:288
VecSwizCon4 yyzw() const
Definition: Vec4.h:271
VecSwizCon4 yyyy() const
Definition: Vec4.h:264
VecSwizCon4 ywxw() const
Definition: Vec4.h:303
VecSwizCon4 yyyx() const
Definition: Vec4.h:263
4D const swizzle vector
Definition: Vec4.h:641
VecSwizCon4 xxww() const
Definition: Vec4.h:171
static const Vec axisZ
Definition: Vec4.h:113
VecSwizCon4 xzxz() const
Definition: Vec4.h:197
VecSwizCon3 zyx() const
Definition: Vec4.h:341
VecSwizCon(Real x, Real y, Real z, Real w)
Definition: Vec4.h:644
VecSwizCon4 xwyz() const
Definition: Vec4.h:223
VecSwizRef4 wzyx()
Definition: Vec4.h:594
VecSwizCon4 wzwz() const
Definition: Vec4.h:464
float Real
Real number type. See Real_ for real number operations and constants.
Definition: Real.h:21
VecSwizCon4 wxxx() const
Definition: Vec4.h:405
VecSwizCon4 wxzw() const
Definition: Vec4.h:418
Vec< 4, Real, matrix::Option::vecRow > VecRow4
4D row vector types
Definition: Vec4.h:679
VecSwizCon4 zxxz() const
Definition: Vec4.h:323
VecSwizCon4 zywy() const
Definition: Vec4.h:358
VecSwizCon3 xxy() const
Definition: Vec4.h:157
VecSwizRef3 wxy()
Definition: Vec4.h:581
VecSwizCon4 zyzz() const
Definition: Vec4.h:354
VecSwizCon3 wzx() const
Definition: Vec4.h:446
VecSwizCon3 xyy() const
Definition: Vec4.h:178
VecSwizCon4 yxww() const
Definition: Vec4.h:255
VecSwizCon4 zzxw() const
Definition: Vec4.h:366
VecSwizCon4 wyzw() const
Definition: Vec4.h:439
VecSwizCon4 xyzw() const
Definition: Vec4.h:187
VecSwizCon4 zxxw() const
Definition: Vec4.h:324
VecSwizCon4 wwwz() const
Definition: Vec4.h:485
VecSwizCon4 zyww() const
Definition: Vec4.h:360
VecSwizCon4 zwxz() const
Definition: Vec4.h:386
VecSwizCon4 wyzz() const
Definition: Vec4.h:438
VecSwizCon4 wxwy() const
Definition: Vec4.h:421
VecSwizCon4 xwzy() const
Definition: Vec4.h:227
VecSwizCon4 wzxz() const
Definition: Vec4.h:449
VecSwizCon4 wxwx() const
Definition: Vec4.h:420
VecSwizCon3 wxy() const
Definition: Vec4.h:409
VecSwizCon3 xzw() const
Definition: Vec4.h:209
VecSwizRef & commit()
Definition: Vec4.h:662
VecSwizRef2 xw()
Definition: Vec4.h:545
VecSwizRef2 yx()
Definition: Vec4.h:550
VecSwizCon4 zwyz() const
Definition: Vec4.h:391
VecSwizRef< 2, Real, Options > VecSwizRef2
Definition: Vec4.h:65
VecSwizCon4 yzyw() const
Definition: Vec4.h:287
VecSwizCon3 yzw() const
Definition: Vec4.h:293
Vector base class.
Definition: Base.h:11
VecSwizCon4 wyyx() const
Definition: Vec4.h:431
Vec(Real scalar)
Construct uniform vector.
Definition: Vec4.h:79
VecSwizCon4 ywxy() const
Definition: Vec4.h:301
Vec & operator=(const MatrixBase< T > &rhs)
Assign to row or column vector of any dimension. Asserts that if this vector has a fixed dimension th...
Definition: Vec.h:56
VecSwizCon2 xw() const
Definition: Vec4.h:214
void storageFill(StorageBlock< T > &store, typename StorageBlock< T >::Real f)
Fill block storage with scalar.
Definition: Block.h:128
VecSwizCon4 wzxx() const
Definition: Vec4.h:447
VecSwizCon4 zxzw() const
Definition: Vec4.h:334
VecSwizCon4 ywyw() const
Definition: Vec4.h:308
VecSwizCon4 yzxx() const
Definition: Vec4.h:279
VecSwizCon3 xxx() const
Definition: Vec4.h:152
VecSwizCon4 yzwy() const
Definition: Vec4.h:295
VecSwizCon4 zwzx() const
Definition: Vec4.h:394
VecSwizRef3 zwy()
Definition: Vec4.h:578
VecSwizRef2 wz()
Definition: Vec4.h:590
VecSwizCon3 wxw() const
Definition: Vec4.h:419
Real lengthSqr() const
Definition: Vec4.h:93
static const Vec zero
Definition: Vec4.h:109
VecSwizCon3 yyx() const
Definition: Vec4.h:257
VecSwizCon4 xzzx() const
Definition: Vec4.h:205
VecSwizCon4 ywyx() const
Definition: Vec4.h:305
VecSwizRef4 zywx()
Definition: Vec4.h:574
VecSwizCon4 xxyz() const
Definition: Vec4.h:160
VecSwizCon3 yyw() const
Definition: Vec4.h:272
VecSwizCon4 ywxz() const
Definition: Vec4.h:302
VecSwizCon4 wzzy() const
Definition: Vec4.h:458
VecSwizCon4 wyxx() const
Definition: Vec4.h:426
VecSwizCon4 zyyz() const
Definition: Vec4.h:349
VecSwizCon4 yzxy() const
Definition: Vec4.h:280
VecSwizCon4 yzzz() const
Definition: Vec4.h:291
VecSwizCon4 yzwz() const
Definition: Vec4.h:296
VecSwizCon3 xyx() const
Definition: Vec4.h:173
VecSwizCon4 xxxx() const
Definition: Vec4.h:153
VecSwizRef3 xwy()
Definition: Vec4.h:546
VecSwizCon4 wyzy() const
Definition: Vec4.h:437
VecSwizCon4 wwyx() const
Definition: Vec4.h:473
VecSwizCon4 zxyw() const
Definition: Vec4.h:329
VecSwizCon4 yzzw() const
Definition: Vec4.h:292
VecSwizRef(Real &x, Real &y, Real &z, Real &w)
Definition: Vec4.h:660
VecSwizCon4 wywy() const
Definition: Vec4.h:442
Vec< 4, Double > Vec4_d
Definition: Vec4.h:676
Definition: Swiz.h:60
VecSwizCon4 yxzw() const
Definition: Vec4.h:250
VecSwizCon4 zwwz() const
Definition: Vec4.h:401
VecSwizCon4 xxzw() const
Definition: Vec4.h:166
VecSwizRef2 zy()
Definition: Vec4.h:570
VecSwizCon4 xxyy() const
Definition: Vec4.h:159
VecSwizRef4 xywz()
Definition: Vec4.h:539
VecSwizCon4 wxyw() const
Definition: Vec4.h:413
VecSwizCon3 wyz() const
Definition: Vec4.h:435
VecSwizCon4 xyyz() const
Definition: Vec4.h:181
VecSwizCon4 zyzy() const
Definition: Vec4.h:353
VecSwizCon4 zyxw() const
Definition: Vec4.h:345
VecSwizCon3 ywy() const
Definition: Vec4.h:304
VecSwizCon4 zxwx() const
Definition: Vec4.h:336
VecSwizCon4 zxwz() const
Definition: Vec4.h:338
Vec(const MatrixBase< T > &rhs)
Construct from vector of same dimension.
Definition: Vec4.h:86
VecSwizRefBase< VecSwizRef< 4, Real, Options > > Super
Definition: Vec4.h:653
Vec & operator=(const MatrixBase< T > &rhs)
Definition: Vec4.h:89
VecSwizCon4 xyzz() const
Definition: Vec4.h:186
VecSwizCon4 ywyz() const
Definition: Vec4.h:307
Real dot(const Vec &v) const
Definition: Vec4.h:94
VecSwizCon4 zyyw() const
Definition: Vec4.h:350
VecSwizCon3 xxz() const
Definition: Vec4.h:162
VecSwizCon4 xxzx() const
Definition: Vec4.h:163
VecSwizCon4 wwzw() const
Definition: Vec4.h:481
VecSwizCon4 zwzw() const
Definition: Vec4.h:397
VecSwizRef3 ywz()
Definition: Vec4.h:563
VecSwizCon2 yw() const
Definition: Vec4.h:298
VecSwizCon3 yww() const
Definition: Vec4.h:314
VecSwizCon4 zyyx() const
Definition: Vec4.h:347
VecSwizRef4 yxzw()
Definition: Vec4.h:552
VecSwizCon4 zxzz() const
Definition: Vec4.h:333
VecSwizCon2 zz() const
Definition: Vec4.h:361
4D mutable swizzle vector
Definition: Vec4.h:649
VecSwizCon4 zwzy() const
Definition: Vec4.h:395
VecSwizCon4 yyxx() const
Definition: Vec4.h:258
VecSwizCon3 xww() const
Definition: Vec4.h:230
VecSwizRef3 yzx()
Definition: Vec4.h:556
VecSwizCon4 xywx() const
Definition: Vec4.h:189
VecSwizCon4 yxyy() const
Definition: Vec4.h:243
VecSwizCon2 yx() const
Definition: Vec4.h:235
VecSwizCon3 yxy() const
Definition: Vec4.h:241
VecSwizCon4 wwwy() const
Definition: Vec4.h:484
VecSwizCon4 zzww() const
Definition: Vec4.h:381
VecSwizCon4 wzwx() const
Definition: Vec4.h:462
Vec Vec4
Definition: Vec4.h:61
VecSwizCon2 zy() const
Definition: Vec4.h:340
VecSwizCon4 zyyy() const
Definition: Vec4.h:348
VecSwizRef4 zyxw()
Definition: Vec4.h:572
VecSwizCon4 ywxx() const
Definition: Vec4.h:300
VecSwizCon4 ywzz() const
Definition: Vec4.h:312
VecSwizCon3 zxw() const
Definition: Vec4.h:335
Vec< 3, Real > Vec3
Definition: Vec4.h:60
void storageCopy(const StorageBlock< Src > &src, StorageBlock< Dst > &dst)
Copy between block and dense storages.
Definition: Block.h:84
static const Vec axisY
Definition: Vec4.h:112
VecSwizCon4 yxxz() const
Definition: Vec4.h:239
VecSwizCon4 yxyz() const
Definition: Vec4.h:244
VecSwizCon4 xwyy() const
Definition: Vec4.h:222
VecSwizCon4 zwxy() const
Definition: Vec4.h:385
VecSwizCon4 xzwx() const
Definition: Vec4.h:210
VecSwizRef4 yzwx()
Definition: Vec4.h:559
VecSwizCon4 zywx() const
Definition: Vec4.h:357
VecSwizCon4 yyxz() const
Definition: Vec4.h:260
Matrix base class.
Definition: Base.h:17
VecSwizRef3 zwx()
Definition: Vec4.h:576
VecSwizRef3 wyx()
Definition: Vec4.h:586
Vec< 2, Real > Vec2
Definition: Vec4.h:59
VecSwizCon3 wwy() const
Definition: Vec4.h:472
VecSwizCon4 xzyy() const
Definition: Vec4.h:201
VecSwizCon4 wzzz() const
Definition: Vec4.h:459
VecSwizCon4 zzwx() const
Definition: Vec4.h:378
VecSwizCon2 xy() const
Definition: Vec4.h:172
VecSwizRef4 zxyw()
Definition: Vec4.h:567
VecSwizCon4 xywy() const
Definition: Vec4.h:190
VecSwizCon3 xyz() const
Definition: Vec4.h:183
VecSwizCon4 xyzx() const
Definition: Vec4.h:184
VecSwizRef3 zyw()
Definition: Vec4.h:573
VecSwizCon< 2, Real, Options > VecSwizCon2
Definition: Vec4.h:62
Vector reference holder for mutable swizzle operators.
Definition: Swiz.h:54
VecSwizCon3 xyw() const
Definition: Vec4.h:188
Global Honeycomb namespace.
Vec(Real x, Real y, Real z, Real w)
Definition: Vec4.h:77
VecSwizCon4 zwwy() const
Definition: Vec4.h:400
VecSwizRef2 xy()
Definition: Vec4.h:535
VecSwizCon4 yzwx() const
Definition: Vec4.h:294
VecSwizCon3 zwz() const
Definition: Vec4.h:393
VecSwizCon4 yxxw() const
Definition: Vec4.h:240
VecSwizCon4 zwyx() const
Definition: Vec4.h:389
VecSwizCon4 yzyz() const
Definition: Vec4.h:286
VecSwizCon4 xxwy() const
Definition: Vec4.h:169
VecSwizCon4 zxyx() const
Definition: Vec4.h:326
VecSwizRef4 yzxw()
Definition: Vec4.h:557
VecSwizRef4 zxwy()
Definition: Vec4.h:569
VecSwizCon4 zzyw() const
Definition: Vec4.h:371
Vec< 4, Float > Vec4_f
Definition: Vec4.h:675
VecSwizRef2 yz()
Definition: Vec4.h:555
VecSwizCon4 yyyw() const
Definition: Vec4.h:266
VecSwizCon4 yxyw() const
Definition: Vec4.h:245
VecSwizCon4 zyzw() const
Definition: Vec4.h:355
2D mutable swizzle vector
Definition: Vec2.h:183
VecSwizCon2 ww() const
Definition: Vec4.h:466
VecSwizCon4 zzwy() const
Definition: Vec4.h:379
VecSwizCon4 yyzy() const
Definition: Vec4.h:269
VecSwizCon4 xwzz() const
Definition: Vec4.h:228
VecSwizCon3 zwy() const
Definition: Vec4.h:388
VecSwizCon2 yy() const
Definition: Vec4.h:256
VecSwizCon4 zxyy() const
Definition: Vec4.h:327
VecSwizRef2 yw()
Definition: Vec4.h:560
VecSwizCon4 zxzx() const
Definition: Vec4.h:331
VecSwizCon3 wxx() const
Definition: Vec4.h:404
VecSwizCon3 xzx() const
Definition: Vec4.h:194
VecSwizCon4 yywy() const
Definition: Vec4.h:274
VecSwizCon4 wwxy() const
Definition: Vec4.h:469
VecSwizRef2 wx()
Definition: Vec4.h:580
VecSwizCon4 xyyw() const
Definition: Vec4.h:182
VecSwizCon4 ywwy() const
Definition: Vec4.h:316
VecSwizCon2 xz() const
Definition: Vec4.h:193