10 template<
class Real,
int Options>
16 namespace vec {
namespace priv
18 template<
class Real, szt Align>
37 namespace matrix {
namespace priv
39 template<
class R,
int O>
41 template<
class R,
int O>
44 template<
class R,
int O>
46 template<
class R,
int O>
49 template<
class R,
int O>
54 template<
class Real,
int Options>
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; }
94 Real dot(
const Vec& v)
const {
return x*v.x + y*v.y + z*v.z + w*v.w; }
98 Vec4
cross(
const Vec4& v1,
const Vec4& v2)
const
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) );
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); }
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); }
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 };
607 template<
class R,
int Opt>
610 struct priv::map_impl<Vec<4,R,Opt>, Vec<4,R,Opt>>
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); }
616 template<
class R,
int Opt>
617 struct priv::map_impl<Vec<4,R,Opt>, Vec<4,R,Opt>, Vec<4,R,Opt>>
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); }
623 template<
class R,
int O,
class Accum_>
624 struct priv::reduce_impl<Vec<4,R,O>, Accum_>
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); }
630 template<
class R,
int O,
class Accum_>
631 struct priv::reduce_impl<Vec<4,R,O>, Accum_, Vec<4,R,O>>
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); }
639 template<
class Real,
int Options>
648 template<
class Real,
int Options>
654 using Super::operator=;
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
VecSwizCon4 xxwz() const
Definition: Vec4.h:170
VecSwizCon4 zxwy() const
Definition: Vec4.h:337
Real y
Definition: Vec4.h:22
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
Real z
Definition: Vec4.h:23
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
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
Real w
Definition: Vec4.h:33
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
Real Real
Definition: Vec.h:17
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
VecSwizCon4 xyyx() const
Definition: Vec4.h:179
VecSwizCon4 wwyw() const
Definition: Vec4.h:476
Real y
Definition: Vec4.h:31
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
Real w
Definition: Vec4.h:24
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
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
Real z
Definition: Vec4.h:32
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.
Real x
Definition: Vec4.h:21
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