10 template<
class Real,
int Options>
16 namespace vec {
namespace priv
18 template<
class Real, szt Align>
27 namespace matrix {
namespace priv
29 template<
class R,
int O>
31 template<
class R,
int O>
34 template<
class R,
int O>
36 template<
class R,
int O>
39 template<
class R,
int O>
44 template<
class Real,
int Options>
70 explicit Vec(
const Vec2& v,
Real z = 0) { x = v.x; y = v.y; this->z = z; }
72 explicit Vec(
const Vec4& v) { x = v.x; y = v.y; z = v.z; }
83 Real dot(
const Vec& v)
const {
return x*v.x + y*v.y + z*v.z; }
87 Vec3
cross(
const Vec3& v)
const {
return Vec3(y*v.z - z*v.y, z*v.x - x*v.z, x*v.y - y*v.x); }
102 w -= dot0*u + dot1*v;
110 const Vec3& w = *
this;
116 u[0] = -w[2]*invLength;
118 u[2] = +w[0]*invLength;
120 v[1] = w[2]*u[0] - w[0]*u[2];
128 u[1] = +w[2]*invLength;
129 u[2] = -w[1]*invLength;
130 v[0] = w[1]*u[2] - w[2]*u[1];
134 return make_tuple(u,v);
148 VecSwizCon2
xx()
const {
return VecSwizCon2(x,x); }
149 VecSwizCon3
xxx()
const {
return VecSwizCon3(x,x,x); }
150 VecSwizCon4
xxxx()
const {
return VecSwizCon4(x,x,x,x); }
151 VecSwizCon4
xxxy()
const {
return VecSwizCon4(x,x,x,y); }
152 VecSwizCon4
xxxz()
const {
return VecSwizCon4(x,x,x,z); }
153 VecSwizCon3
xxy()
const {
return VecSwizCon3(x,x,y); }
154 VecSwizCon4
xxyx()
const {
return VecSwizCon4(x,x,y,x); }
155 VecSwizCon4
xxyy()
const {
return VecSwizCon4(x,x,y,y); }
156 VecSwizCon4
xxyz()
const {
return VecSwizCon4(x,x,y,z); }
157 VecSwizCon3
xxz()
const {
return VecSwizCon3(x,x,z); }
158 VecSwizCon4
xxzx()
const {
return VecSwizCon4(x,x,z,x); }
159 VecSwizCon4
xxzy()
const {
return VecSwizCon4(x,x,z,y); }
160 VecSwizCon4
xxzz()
const {
return VecSwizCon4(x,x,z,z); }
161 VecSwizCon2
xy()
const {
return VecSwizCon2(x,y); }
162 VecSwizCon3
xyx()
const {
return VecSwizCon3(x,y,x); }
163 VecSwizCon4
xyxx()
const {
return VecSwizCon4(x,y,x,x); }
164 VecSwizCon4
xyxy()
const {
return VecSwizCon4(x,y,x,y); }
165 VecSwizCon4
xyxz()
const {
return VecSwizCon4(x,y,x,z); }
166 VecSwizCon3
xyy()
const {
return VecSwizCon3(x,y,y); }
167 VecSwizCon4
xyyx()
const {
return VecSwizCon4(x,y,y,x); }
168 VecSwizCon4
xyyy()
const {
return VecSwizCon4(x,y,y,y); }
169 VecSwizCon4
xyyz()
const {
return VecSwizCon4(x,y,y,z); }
170 VecSwizCon3
xyz()
const {
return VecSwizCon3(x,y,z); }
171 VecSwizCon4
xyzx()
const {
return VecSwizCon4(x,y,z,x); }
172 VecSwizCon4
xyzy()
const {
return VecSwizCon4(x,y,z,y); }
173 VecSwizCon4
xyzz()
const {
return VecSwizCon4(x,y,z,z); }
174 VecSwizCon2
xz()
const {
return VecSwizCon2(x,z); }
175 VecSwizCon3
xzx()
const {
return VecSwizCon3(x,z,x); }
176 VecSwizCon4
xzxx()
const {
return VecSwizCon4(x,z,x,x); }
177 VecSwizCon4
xzxy()
const {
return VecSwizCon4(x,z,x,y); }
178 VecSwizCon4
xzxz()
const {
return VecSwizCon4(x,z,x,z); }
179 VecSwizCon3
xzy()
const {
return VecSwizCon3(x,z,y); }
180 VecSwizCon4
xzyx()
const {
return VecSwizCon4(x,z,y,x); }
181 VecSwizCon4
xzyy()
const {
return VecSwizCon4(x,z,y,y); }
182 VecSwizCon4
xzyz()
const {
return VecSwizCon4(x,z,y,z); }
183 VecSwizCon3
xzz()
const {
return VecSwizCon3(x,z,z); }
184 VecSwizCon4
xzzx()
const {
return VecSwizCon4(x,z,z,x); }
185 VecSwizCon4
xzzy()
const {
return VecSwizCon4(x,z,z,y); }
186 VecSwizCon4
xzzz()
const {
return VecSwizCon4(x,z,z,z); }
187 VecSwizCon2
yx()
const {
return VecSwizCon2(y,x); }
188 VecSwizCon3
yxx()
const {
return VecSwizCon3(y,x,x); }
189 VecSwizCon4
yxxx()
const {
return VecSwizCon4(y,x,x,x); }
190 VecSwizCon4
yxxy()
const {
return VecSwizCon4(y,x,x,y); }
191 VecSwizCon4
yxxz()
const {
return VecSwizCon4(y,x,x,z); }
192 VecSwizCon3
yxy()
const {
return VecSwizCon3(y,x,y); }
193 VecSwizCon4
yxyx()
const {
return VecSwizCon4(y,x,y,x); }
194 VecSwizCon4
yxyy()
const {
return VecSwizCon4(y,x,y,y); }
195 VecSwizCon4
yxyz()
const {
return VecSwizCon4(y,x,y,z); }
196 VecSwizCon3
yxz()
const {
return VecSwizCon3(y,x,z); }
197 VecSwizCon4
yxzx()
const {
return VecSwizCon4(y,x,z,x); }
198 VecSwizCon4
yxzy()
const {
return VecSwizCon4(y,x,z,y); }
199 VecSwizCon4
yxzz()
const {
return VecSwizCon4(y,x,z,z); }
200 VecSwizCon2
yy()
const {
return VecSwizCon2(y,y); }
201 VecSwizCon3
yyx()
const {
return VecSwizCon3(y,y,x); }
202 VecSwizCon4
yyxx()
const {
return VecSwizCon4(y,y,x,x); }
203 VecSwizCon4
yyxy()
const {
return VecSwizCon4(y,y,x,y); }
204 VecSwizCon4
yyxz()
const {
return VecSwizCon4(y,y,x,z); }
205 VecSwizCon3
yyy()
const {
return VecSwizCon3(y,y,y); }
206 VecSwizCon4
yyyx()
const {
return VecSwizCon4(y,y,y,x); }
207 VecSwizCon4
yyyy()
const {
return VecSwizCon4(y,y,y,y); }
208 VecSwizCon4
yyyz()
const {
return VecSwizCon4(y,y,y,z); }
209 VecSwizCon3
yyz()
const {
return VecSwizCon3(y,y,z); }
210 VecSwizCon4
yyzx()
const {
return VecSwizCon4(y,y,z,x); }
211 VecSwizCon4
yyzy()
const {
return VecSwizCon4(y,y,z,y); }
212 VecSwizCon4
yyzz()
const {
return VecSwizCon4(y,y,z,z); }
213 VecSwizCon2
yz()
const {
return VecSwizCon2(y,z); }
214 VecSwizCon3
yzx()
const {
return VecSwizCon3(y,z,x); }
215 VecSwizCon4
yzxx()
const {
return VecSwizCon4(y,z,x,x); }
216 VecSwizCon4
yzxy()
const {
return VecSwizCon4(y,z,x,y); }
217 VecSwizCon4
yzxz()
const {
return VecSwizCon4(y,z,x,z); }
218 VecSwizCon3
yzy()
const {
return VecSwizCon3(y,z,y); }
219 VecSwizCon4
yzyx()
const {
return VecSwizCon4(y,z,y,x); }
220 VecSwizCon4
yzyy()
const {
return VecSwizCon4(y,z,y,y); }
221 VecSwizCon4
yzyz()
const {
return VecSwizCon4(y,z,y,z); }
222 VecSwizCon3
yzz()
const {
return VecSwizCon3(y,z,z); }
223 VecSwizCon4
yzzx()
const {
return VecSwizCon4(y,z,z,x); }
224 VecSwizCon4
yzzy()
const {
return VecSwizCon4(y,z,z,y); }
225 VecSwizCon4
yzzz()
const {
return VecSwizCon4(y,z,z,z); }
226 VecSwizCon2
zx()
const {
return VecSwizCon2(z,x); }
227 VecSwizCon3
zxx()
const {
return VecSwizCon3(z,x,x); }
228 VecSwizCon4
zxxx()
const {
return VecSwizCon4(z,x,x,x); }
229 VecSwizCon4
zxxy()
const {
return VecSwizCon4(z,x,x,y); }
230 VecSwizCon4
zxxz()
const {
return VecSwizCon4(z,x,x,z); }
231 VecSwizCon3
zxy()
const {
return VecSwizCon3(z,x,y); }
232 VecSwizCon4
zxyx()
const {
return VecSwizCon4(z,x,y,x); }
233 VecSwizCon4
zxyy()
const {
return VecSwizCon4(z,x,y,y); }
234 VecSwizCon4
zxyz()
const {
return VecSwizCon4(z,x,y,z); }
235 VecSwizCon3
zxz()
const {
return VecSwizCon3(z,x,z); }
236 VecSwizCon4
zxzx()
const {
return VecSwizCon4(z,x,z,x); }
237 VecSwizCon4
zxzy()
const {
return VecSwizCon4(z,x,z,y); }
238 VecSwizCon4
zxzz()
const {
return VecSwizCon4(z,x,z,z); }
239 VecSwizCon2
zy()
const {
return VecSwizCon2(z,y); }
240 VecSwizCon3
zyx()
const {
return VecSwizCon3(z,y,x); }
241 VecSwizCon4
zyxx()
const {
return VecSwizCon4(z,y,x,x); }
242 VecSwizCon4
zyxy()
const {
return VecSwizCon4(z,y,x,y); }
243 VecSwizCon4
zyxz()
const {
return VecSwizCon4(z,y,x,z); }
244 VecSwizCon3
zyy()
const {
return VecSwizCon3(z,y,y); }
245 VecSwizCon4
zyyx()
const {
return VecSwizCon4(z,y,y,x); }
246 VecSwizCon4
zyyy()
const {
return VecSwizCon4(z,y,y,y); }
247 VecSwizCon4
zyyz()
const {
return VecSwizCon4(z,y,y,z); }
248 VecSwizCon3
zyz()
const {
return VecSwizCon3(z,y,z); }
249 VecSwizCon4
zyzx()
const {
return VecSwizCon4(z,y,z,x); }
250 VecSwizCon4
zyzy()
const {
return VecSwizCon4(z,y,z,y); }
251 VecSwizCon4
zyzz()
const {
return VecSwizCon4(z,y,z,z); }
252 VecSwizCon2
zz()
const {
return VecSwizCon2(z,z); }
253 VecSwizCon3
zzx()
const {
return VecSwizCon3(z,z,x); }
254 VecSwizCon4
zzxx()
const {
return VecSwizCon4(z,z,x,x); }
255 VecSwizCon4
zzxy()
const {
return VecSwizCon4(z,z,x,y); }
256 VecSwizCon4
zzxz()
const {
return VecSwizCon4(z,z,x,z); }
257 VecSwizCon3
zzy()
const {
return VecSwizCon3(z,z,y); }
258 VecSwizCon4
zzyx()
const {
return VecSwizCon4(z,z,y,x); }
259 VecSwizCon4
zzyy()
const {
return VecSwizCon4(z,z,y,y); }
260 VecSwizCon4
zzyz()
const {
return VecSwizCon4(z,z,y,z); }
261 VecSwizCon3
zzz()
const {
return VecSwizCon3(z,z,z); }
262 VecSwizCon4
zzzx()
const {
return VecSwizCon4(z,z,z,x); }
263 VecSwizCon4
zzzy()
const {
return VecSwizCon4(z,z,z,y); }
264 VecSwizCon4
zzzz()
const {
return VecSwizCon4(z,z,z,z); }
269 VecSwizRef2
xy() {
return VecSwizRef2(x,y); }
270 VecSwizRef3
xyz() {
return VecSwizRef3(x,y,z); }
271 VecSwizRef2
xz() {
return VecSwizRef2(x,z); }
272 VecSwizRef3
xzy() {
return VecSwizRef3(x,z,y); }
273 VecSwizRef2
yx() {
return VecSwizRef2(y,x); }
274 VecSwizRef3
yxz() {
return VecSwizRef3(y,x,z); }
275 VecSwizRef2
yz() {
return VecSwizRef2(y,z); }
276 VecSwizRef3
yzx() {
return VecSwizRef3(y,z,x); }
277 VecSwizRef2
zx() {
return VecSwizRef2(z,x); }
278 VecSwizRef3
zxy() {
return VecSwizRef3(z,x,y); }
279 VecSwizRef2
zy() {
return VecSwizRef2(z,y); }
280 VecSwizRef3
zyx() {
return VecSwizRef3(z,y,x); }
284 template<
class R,
int O>
const Vec<3,R,O> Vec<3,R,O>::zero (0);
285 template<
class R,
int O>
const Vec<3,R,O> Vec<3,R,O>::one (1);
286 template<
class R,
int O>
const Vec<3,R,O> Vec<3,R,O>::axisX (1, 0, 0);
287 template<
class R,
int O>
const Vec<3,R,O> Vec<3,R,O>::axisY (0, 1, 0);
288 template<
class R,
int O>
const Vec<3,R,O> Vec<3,R,O>::axisZ (0, 0, 1);
289 template<
class R,
int O>
const Vec<3,R,O> Vec<3,R,O>::axis[3] = { axisX, axisY, axisZ };
292 template<
class R,
int Opt>
295 struct priv::map_impl<Vec<3,R,Opt>, Vec<3,R,Opt>>
297 template<
class T,
class O,
class Func>
298 static O&& func(T&& v, O&& o, Func&& f) { o.x = f(v.x); o.y = f(v.y); o.z = f(v.z);
return forward<O>(o); }
301 template<
class R,
int Opt>
302 struct priv::map_impl<Vec<3,R,Opt>, Vec<3,R,Opt>, Vec<3,R,Opt>>
304 template<
class T,
class T2,
class O,
class Func>
305 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);
return forward<O>(o); }
308 template<
class R,
int O,
class Accum_>
309 struct priv::reduce_impl<Vec<3,R,O>, Accum_>
311 template<
class T,
class Accum,
class Func>
312 static Accum_ func(T&& v, Accum&& initVal, Func&& f) {
return f(f(f(forward<Accum>(initVal), v.x), v.y), v.z); }
315 template<
class R,
int O,
class Accum_>
316 struct priv::reduce_impl<Vec<3,R,O>, Accum_, Vec<3,R,O>>
318 template<
class T,
class T2,
class Accum,
class Func>
319 static Accum_ func(T&& v, T2&& rhs, Accum&& initVal, Func&& f) {
return f(f(f(forward<Accum>(initVal), v.x, rhs.x), v.y, rhs.y), v.z, rhs.z); }
324 template<
class Real,
int Options>
333 template<
class Real,
int Options>
339 using Super::operator=;
367 #include "Honey/Math/Alge/Vec/platform/Vec3.h"
MatrixS & fromScalar(Real f)
Initialize with scalar in every element.
Definition: Base.h:72
VecSwizCon2 zy() const
Definition: Vec3.h:239
Real lengthSqr() const
Definition: Vec3.h:82
VecSwizCon4 zzxz() const
Definition: Vec3.h:256
VecSwizCon2 yx() const
Definition: Vec3.h:187
VecSwizCon4 yxxy() const
Definition: Vec3.h:190
Automatic (stack-compatible) vector storage that allows direct access to dimension fields...
Definition: Storage.h:13
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
void storageFillZero(StorageBlock< T > &store)
Fill block storage with zeros.
Definition: Block.h:136
VecSwizCon4 zxxy() const
Definition: Vec3.h:229
VecSwizCon4 zxzz() const
Definition: Vec3.h:238
static const Vec axisZ
Definition: Vec3.h:142
VecSwizCon4 yxyx() const
Definition: Vec3.h:193
Vec3 cross(const Vec3 &v) const
Vector cross product.
Definition: Vec3.h:87
VecSwizRef3 xzy()
Definition: Vec3.h:272
N-dimensional vector traits.
Definition: Vec.h:14
VecSwizRef & commit()
Definition: Vec3.h:346
VecSwizRef< 3, Real, Options > VecSwizRef3
Definition: Vec3.h:57
static const Vec axisY
Definition: Vec3.h:141
VecSwizCon4 xzzx() const
Definition: Vec3.h:184
VecSwizCon4 yzzx() const
Definition: Vec3.h:223
VecSwizCon3 yxz() const
Definition: Vec3.h:196
Real dot(const VecBase< T > &v) const
Vector dot product.
Definition: Base.h:91
VecSwizCon4 xyzy() const
Definition: Vec3.h:172
VecSwizCon4 zxyx() const
Definition: Vec3.h:232
VecSwizCon3 xxy() const
Definition: Vec3.h:153
VecSwizRef2 xz()
Definition: Vec3.h:271
VecSwizRef2 zy()
Definition: Vec3.h:279
VecSwizCon4 yyyy() const
Definition: Vec3.h:207
VecSwizCon3 yzz() const
Definition: Vec3.h:222
VecSwizCon3 xzz() const
Definition: Vec3.h:183
VecSwizCon4 xzzy() const
Definition: Vec3.h:185
Vec< 3, Float > Vec3_f
Definition: Vec3.h:357
VecSwizCon4 xyyy() const
Definition: Vec3.h:168
Vec< 3, Double > Vec3_d
Definition: Vec3.h:358
VecSwizCon4 zxyy() const
Definition: Vec3.h:233
VecSwizCon3 zzy() const
Definition: Vec3.h:257
VecSwizCon3 zzx() const
Definition: Vec3.h:253
VecSwizCon4 yzyz() const
Definition: Vec3.h:221
VecSwizCon4 xyxy() const
Definition: Vec3.h:164
VecS normalize(optional< Real & > len=optnull) const
Get unit vector. The pre-normalized length will be returned in len if specified.
Definition: Base.h:77
VecSwizCon4 yyxx() const
Definition: Vec3.h:202
VecSwizCon3 zxz() const
Definition: Vec3.h:235
VecSwizRef(Real &x, Real &y, Real &z)
Definition: Vec3.h:344
Vec(Real x, Real y, Real z)
Definition: Vec3.h:66
VecSwizCon4 xxyy() const
Definition: Vec3.h:155
bool storageEqual(const StorageBlock< T > &lhs, const StorageBlock< T2 > &rhs)
Test between block storages.
Definition: Block.h:157
VecSwizCon4 xyxz() const
Definition: Vec3.h:165
VecSwizRef3 yxz()
Definition: Vec3.h:274
3D const swizzle vector
Definition: Vec3.h:326
Alge_< Real > Alge
Definition: Base.h:28
tuple< Vec3, Vec3 > orthonormalBasis() const
Generate an orthonormal basis {u,v,this} (all unit length and perpendicular). Returns (Vec3 u...
Definition: Vec3.h:107
VecSwizCon3 zyx() const
Definition: Vec3.h:240
VecSwizCon4 zyyz() const
Definition: Vec3.h:247
VecSwizCon4 yzxz() const
Definition: Vec3.h:217
Vec & operator=(const MatrixBase< T > &rhs)
Definition: Vec3.h:78
Vector for const swizzle operators.
Definition: Swiz.h:10
Real dot(const Vec &v) const
Definition: Vec3.h:83
static Real sqrtInv(Real x)
Inverse Square Root.
Definition: Alge.h:65
VecSwizRef3 xyz()
Definition: Vec3.h:270
2D const swizzle vector
Definition: Vec2.h:175
VecSwizCon< 4, Real, Options > VecSwizCon4
Definition: Vec3.h:55
VecSwizCon< 3, Real, Options > VecSwizCon3
Definition: Vec3.h:54
VecSwizCon2 xy() const
Definition: Vec3.h:161
static const Vec one
Definition: Vec3.h:139
VecSwizCon2 xx() const
Definition: Vec3.h:148
VecSwizCon3 zxx() const
Definition: Vec3.h:227
VecSwizRef2 yz()
Definition: Vec3.h:275
VecSwizCon4 xxxz() const
Definition: Vec3.h:152
VecSwizCon3 xyz() const
Definition: Vec3.h:170
Vec(Real scalar)
Construct uniform vector.
Definition: Vec3.h:68
VecSwizCon3 zxy() const
Definition: Vec3.h:231
Vec(const MatrixBase< T > &rhs)
Construct from vector of same dimension.
Definition: Vec3.h:75
VecSwizCon4 zzzx() const
Definition: Vec3.h:262
VecSwizCon3 zyy() const
Definition: Vec3.h:244
VecSwizCon4 xzxx() const
Definition: Vec3.h:176
VecSwizCon4 xzxz() const
Definition: Vec3.h:178
VecSwizCon4 yxxz() const
Definition: Vec3.h:191
VecSwizCon4 yyzx() const
Definition: Vec3.h:210
VecSwizCon4 yzxx() const
Definition: Vec3.h:215
VecSwizCon3 zzz() const
Definition: Vec3.h:261
VecSwizCon3 yxy() const
Definition: Vec3.h:192
VecSwizRef2 xy()
Definition: Vec3.h:269
VecSwizCon4 zzxx() const
Definition: Vec3.h:254
VecSwizCon4 zyyx() const
Definition: Vec3.h:245
VecSwizCon4 yxxx() const
Definition: Vec3.h:189
VecSwizCon3 xyx() const
Definition: Vec3.h:162
3D mutable swizzle vector
Definition: Vec3.h:334
VecSwizCon4 xyyx() const
Definition: Vec3.h:167
VecSwizRef3 yzx()
Definition: Vec3.h:276
static Int abs(Int x)
Get absolute value of signed integer.
Definition: Alge.h:21
static const Vec zero
Definition: Vec3.h:138
VecSwizCon4 zzyx() const
Definition: Vec3.h:258
VecSwizCon4 xxxx() const
Definition: Vec3.h:150
VecSwizRef2 yx()
Definition: Vec3.h:273
VecSwizCon4 zyyy() const
Definition: Vec3.h:246
VecSwizCon4 zxxz() const
Definition: Vec3.h:230
Real Real
Definition: Vec.h:17
VecSwizCon3 yyy() const
Definition: Vec3.h:205
N-dimensional vector.
Definition: Traits.h:12
VecSwizCon2 xz() const
Definition: Vec3.h:174
VecSwizRef3 zyx()
Definition: Vec3.h:280
VecSwizCon4 yyzy() const
Definition: Vec3.h:211
VecSwizCon4 yyzz() const
Definition: Vec3.h:212
VecSwizCon4 yyyx() const
Definition: Vec3.h:206
VecSwizCon4 zzyz() const
Definition: Vec3.h:260
VecSwizCon3 yzy() const
Definition: Vec3.h:218
VecSwizCon2 zz() const
Definition: Vec3.h:252
Vec(const Vec4 &v)
Construct from vector ignoring the extra components.
Definition: Vec3.h:72
VecSwizCon4 yxzx() const
Definition: Vec3.h:197
VecSwizCon4 yyxz() const
Definition: Vec3.h:204
VecSwizCon3 xyy() const
Definition: Vec3.h:166
4D const swizzle vector
Definition: Vec4.h:641
VecSwizCon4 xyzx() const
Definition: Vec3.h:171
float Real
Real number type. See Real_ for real number operations and constants.
Definition: Real.h:21
VecSwizCon3 xxz() const
Definition: Vec3.h:157
VecSwizRef3 zxy()
Definition: Vec3.h:278
Vec()
No init.
Definition: Vec3.h:65
VecSwizRef2 zx()
Definition: Vec3.h:277
Vec< 3 > Vec3
3D column vector types
Definition: Vec3.h:356
VecSwizRef< 2, Real, Options > VecSwizRef2
Definition: Vec3.h:56
VecSwizCon4 yxzy() const
Definition: Vec3.h:198
VecSwizCon3 yxx() const
Definition: Vec3.h:188
VecSwizCon4 zyxx() const
Definition: Vec3.h:241
Vector base class.
Definition: Base.h:11
VecSwizCon3 yzx() const
Definition: Vec3.h:214
VecSwizCon4 zzyy() const
Definition: Vec3.h:259
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
Vec< 2, Real > Vec2
Definition: Vec3.h:50
void storageFill(StorageBlock< T > &store, typename StorageBlock< T >::Real f)
Fill block storage with scalar.
Definition: Block.h:128
VecSwizCon2 yz() const
Definition: Vec3.h:213
VecSwizCon4 zyxz() const
Definition: Vec3.h:243
VecSwizCon4 yyyz() const
Definition: Vec3.h:208
VecSwizRefBase< VecSwizRef< 3, Real, Options > > Super
Definition: Vec3.h:338
VecSwizCon4 xyzz() const
Definition: Vec3.h:173
Vec< 3, Float, matrix::Option::vecRow > VecRow3_f
Definition: Vec3.h:362
VecSwizCon4 xzyz() const
Definition: Vec3.h:182
VecSwizCon4 yzyx() const
Definition: Vec3.h:219
VecSwizCon4 yxzz() const
Definition: Vec3.h:199
VecSwizCon3 xzx() const
Definition: Vec3.h:175
Real z
Definition: Vec3.h:23
VecSwizCon3 yyz() const
Definition: Vec3.h:209
VecSwizCon2 yy() const
Definition: Vec3.h:200
VecSwizCon4 zzxy() const
Definition: Vec3.h:255
Vec< 3, Double, matrix::Option::vecRow > VecRow3_d
Definition: Vec3.h:363
VecSwizCon4 yyxy() const
Definition: Vec3.h:203
Vec3 crossUnit(const Vec3 &v) const
Vector cross product, result is normalized unit vector.
Definition: Vec3.h:89
VecSwizCon4 zxxx() const
Definition: Vec3.h:228
VecSwizCon4 xxzz() const
Definition: Vec3.h:160
VecSwizCon4 zyzz() const
Definition: Vec3.h:251
VecSwizCon3 zyz() const
Definition: Vec3.h:248
VecSwizCon4 yxyy() const
Definition: Vec3.h:194
VecSwizCon4 zxzx() const
Definition: Vec3.h:236
VecSwizCon(Real x, Real y, Real z)
Definition: Vec3.h:329
Vec(const Vec2 &v, Real z=0)
Construct from 2D vector.
Definition: Vec3.h:70
static void orthonormalize(Vec3 &u, Vec3 &v, Vec3 &w)
Gram-Schmidt orthonormalization. Useful for re-normalizing an orthonormal basis to eliminate rounding...
Definition: Vec3.h:92
VecSwizCon4 yxyz() const
Definition: Vec3.h:195
VecSwizCon4 xxzy() const
Definition: Vec3.h:159
VecSwizCon4 yzxy() const
Definition: Vec3.h:216
VecSwizCon4 xzzz() const
Definition: Vec3.h:186
VecSwizCon2 zx() const
Definition: Vec3.h:226
VecSwizCon3 xxx() const
Definition: Vec3.h:149
VecSwizCon4 xxxy() const
Definition: Vec3.h:151
Vec Vec3
Definition: Vec3.h:51
VecSwizCon4 zyzx() const
Definition: Vec3.h:249
void storageCopy(const StorageBlock< Src > &src, StorageBlock< Dst > &dst)
Copy between block and dense storages.
Definition: Block.h:84
VecSwizCon4 xyyz() const
Definition: Vec3.h:169
VecSwizCon4 xyxx() const
Definition: Vec3.h:163
Real y
Definition: Vec3.h:22
VecSwizCon4 zzzz() const
Definition: Vec3.h:264
VecSwizCon4 xxyx() const
Definition: Vec3.h:154
VecSwizCon4 zzzy() const
Definition: Vec3.h:263
Real x
Definition: Vec3.h:21
VecSwizCon4 xzyy() const
Definition: Vec3.h:181
Matrix base class.
Definition: Base.h:17
VecSwizCon4 yzzz() const
Definition: Vec3.h:225
Vec< 3, Real, matrix::Option::vecRow > VecRow3
3D row vector types
Definition: Vec3.h:361
VecSwizCon4 zyzy() const
Definition: Vec3.h:250
VecSwizCon3 yyx() const
Definition: Vec3.h:201
VecSwizCon4 zxyz() const
Definition: Vec3.h:234
VecSwizCon4 xxyz() const
Definition: Vec3.h:156
VecSwizCon4 yzyy() const
Definition: Vec3.h:220
VecSwizCon4 xxzx() const
Definition: Vec3.h:158
VecSwizCon< 2, Real, Options > VecSwizCon2
Definition: Vec3.h:53
Vector reference holder for mutable swizzle operators.
Definition: Swiz.h:54
Global Honeycomb namespace.
Vec< 4, Real > Vec4
Definition: Vec3.h:52
static const Vec axisX
Definition: Vec3.h:140
vec::priv::StorageFields< Vec< 3, Real, Options > > Storage
Definition: Vec3.h:13
2D mutable swizzle vector
Definition: Vec2.h:183
VecSwizCon4 zxzy() const
Definition: Vec3.h:237
VecSwizCon4 zyxy() const
Definition: Vec3.h:242
VecSwizCon4 xzxy() const
Definition: Vec3.h:177
VecSwizCon4 xzyx() const
Definition: Vec3.h:180
VecSwizCon3 xzy() const
Definition: Vec3.h:179
VecSwizCon4 yzzy() const
Definition: Vec3.h:224