30 return Vec3( v1.
y * v2.
z - v1.
z * v2.
y,
31 v1.
z * v2.
x - v1.
x * v2.
z,
32 v1.
x * v2.
y - v1.
y * v2.
x );
46 return Vec3( v1.
x < v2.
x ? v1.
x : v2.
x,
47 v1.
y < v2.
y ? v1.
y : v2.
y,
48 v1.
z < v2.
z ? v1.
z : v2.
z );
61 return Vec3( v1.
x > v2.
x ? v1.
x : v2.
x,
62 v1.
y > v2.
y ? v1.
y : v2.
y,
63 v1.
z > v2.
z ? v1.
z : v2.
z );
76 return (v2 - v1).Length();
89 const Vec3 sub = v2 - v1;
90 return sub.
x * sub.
x + sub.
y * sub.
y + sub.
z * sub.
z;
102 return v1.
x * v2.
x + v1.
y * v2.
y + v1.
z * v2.
z;
118 Vec3(
Vec3&& v ) noexcept =
default;
121 Vec3(
const Vec3& other ) noexcept =
default;
130 Vec3(
float ax,
float ay,
float az ) noexcept :
x(ax),
y(ay),
z(az) {}
143 const float inv = 1.0f / f;
144 return Vec3(x * inv, y * inv, z * inv);
155 return Vec3( x / v.
x, y / v.
y, z / v.
z );
165 return Vec3( -x, -y, -z );
176 return Vec3( x - v.
x, y - v.
y, z - v.
z );
187 return Vec3( x + v.
x, y + v.
y, z + v.
z );
198 return Vec3( x + f, y + f, z + f );
254 const float inv = 1.0f / f;
294 return Vec3( x * v.
x, y * v.
y, z * v.
z );
305 return Vec3( x * f, y * f, z * f );
317 const float len =
Length();
319 if( std::abs( len ) < 0.0001f )
337 const float epsilon = 0.0001f;
338 return std::abs( x - v2.
x ) < epsilon &&
339 std::abs( y - v2.
y ) < epsilon &&
340 std::abs( z - v2.
z ) < epsilon;
344 float Length()
const {
return std::sqrt( x * x + y * y + z * z ); }
372 Vec4(
float ax,
float ay,
float az,
float aw ) : x( ax ), y( ay ), z( az ), w( aw ) {}
375 Vec4(
Vec4&& v ) noexcept =
default;
378 Vec4(
const Vec4& other ) noexcept =
default;
381 explicit Vec4(
const Vec3& v) : x(v.x), y(v.y), z(v.z), w(1) {}
389 Vec4(
const Vec3& v,
float aW ) : x( v.x ), y( v.y ), z( v.z ), w(aW) {}
396 const float epsilon = 0.0001f;
397 return std::abs( x - v2.
x ) < epsilon &&
398 std::abs( y - v2.
y ) < epsilon &&
399 std::abs( z - v2.
z ) < epsilon &&
400 std::abs( w - v2.
w ) < epsilon;
419 return Vec4(x * f, y * f, z * f, w * f);
458 return x * v.
x + y * v.
y + z * v.
z + w * v.
w;
462 float Length()
const {
return std::sqrt( x * x + y * y + z * z ); }
469 const float len =
Length();
471 if (std::abs( len ) < 0.0001f)
479 const float iLength = 1 / len;
Vec3 & operator+=(const Vec3 &v)
Definition: Vec3.hpp:222
static Vec3 Reflect(const Vec3 &vec, const Vec3 &normal)
Definition: Vec3.hpp:112
float w
W coordinate.
Definition: Vec3.hpp:360
Vec3(float ax, float ay, float az) noexcept
Definition: Vec3.hpp:130
Vec4 operator*(float f) const
Definition: Vec3.hpp:417
float x
X coordinate.
Definition: Vec3.hpp:15
Vec3 operator+(float f) const
Definition: Vec3.hpp:196
static float DistanceSquared(const Vec3 &v1, const Vec3 &v2)
Definition: Vec3.hpp:87
Vec3 operator/(float f) const
Definition: Vec3.hpp:141
Definition: AudioClip.hpp:4
static Vec3 Min2(const Vec3 &v1, const Vec3 &v2)
Definition: Vec3.hpp:44
4-component vector.
Definition: Vec3.hpp:351
Vec3 & operator=(const Vec3 &v)
Definition: Vec3.hpp:284
Vec3 operator*(const Vec3 &v) const
Definition: Vec3.hpp:292
float x
X coordinate.
Definition: Vec3.hpp:354
static Vec3 Max2(const Vec3 &v1, const Vec3 &v2)
Definition: Vec3.hpp:59
Vec3 operator+(const Vec3 &v) const
Definition: Vec3.hpp:185
float Dot(const Vec4 &v) const
Definition: Vec3.hpp:456
Vec3 & operator*=(float f)
Definition: Vec3.hpp:237
Vec3 & operator*=(const Vec3 &v)
Definition: Vec3.hpp:269
float y
Y coordinate.
Definition: Vec3.hpp:356
float Length() const
Definition: Vec3.hpp:462
static float Distance(const Vec3 &v1, const Vec3 &v2)
Definition: Vec3.hpp:74
3-component vector.
Definition: Vec3.hpp:12
Vec3 operator*(float f) const
Definition: Vec3.hpp:303
Vec3 & operator/=(float f)
Definition: Vec3.hpp:252
Vec3 operator-(const Vec3 &v) const
Definition: Vec3.hpp:174
Vec4 & operator-=(const Vec4 &v)
Definition: Vec3.hpp:441
float z
Z coordinate.
Definition: Vec3.hpp:19
Vec4(const Vec3 &v, float aW)
Definition: Vec3.hpp:389
static Vec3 Cross(const Vec3 &v1, const Vec3 &v2)
Cross product.
Definition: Vec3.hpp:28
Vec3 operator/(const Vec3 &v) const
Definition: Vec3.hpp:153
Vec3 & operator-=(const Vec3 &v)
Definition: Vec3.hpp:207
Vec3 operator-() const
Definition: Vec3.hpp:163
Vec4(const Vec3 &v)
Definition: Vec3.hpp:381
bool IsAlmost(const Vec3 &v2) const
Definition: Vec3.hpp:335
Vec4(float ax, float ay, float az, float aw)
Definition: Vec3.hpp:372
Vec4 & operator=(const Vec4 &v)
Definition: Vec3.hpp:409
static float Dot(const Vec3 &v1, const Vec3 &v2)
Definition: Vec3.hpp:100
Vec4 & operator+=(const Vec4 &v)
Definition: Vec3.hpp:427
void Normalize()
Definition: Vec3.hpp:467
Vec3 & operator=(Vec3 &&) noexcept=default
Move assignment.
Vec3 Normalized() const
Definition: Vec3.hpp:311
float y
Y coordinate.
Definition: Vec3.hpp:17
float Length() const
Definition: Vec3.hpp:344
bool IsAlmost(const Vec4 &v2) const
Definition: Vec3.hpp:394
float z
Z coordinate.
Definition: Vec3.hpp:358
void Zero()
Resets this vector's values to 0.
Definition: Vec3.hpp:347