81 constexpr const T &
operator[](
const int index)
const {
return index ?
y :
x; }
89 float c = std::cos(
angle);
102 return a.
x * b.
x + a.
y * b.
y;
105template<std::
floating_po
int T>
108 return std::sqrt(
dot(a, a));
111template<std::
integral T>
114 return std::sqrt(
static_cast<float>(
dot(a, a)));
124 if(a.
x == 0 && a.
y == 0)
127 return a.
y < 0 ? -
pi / 2 :
pi / 2;
128 float result = std::atan(a.
y / a.
x);
130 result = result +
pi;
144 float divisor =
length(v);
147 float l = 1.0f / divisor;
169 T SquaredMagnitudeAB =
dot(AB, AB);
170 if(SquaredMagnitudeAB > 0)
173 T APdotAB =
dot(AP, AB);
174 T t = APdotAB / SquaredMagnitudeAB;
175 out_pos = line_pointA + AB * std::clamp(t, (T)0, (T)1);
184 vec2 Delta = LineEnd - LineStart;
185 vec2 Offset = LineStart - CircleCenter;
189 float B = 2.0f *
dot(Offset, Delta);
190 float C =
dot(Offset, Offset) - Radius * Radius;
192 float Discriminant =
B *
B - 4.0f * A * C;
193 if(Discriminant < 0.0f || A == 0.0f)
198 else if(Discriminant == 0.0f)
201 float Time = -
B / (2.0f * A);
202 aIntersections[0] = LineStart + Delta * Time;
207 Discriminant = std::sqrt(Discriminant);
208 float Time1 = (-
B - Discriminant) / (2.0f * A);
209 float Time2 = (-
B + Discriminant) / (2.0f * A);
211 aIntersections[0] = LineStart + Delta * Time1;
212 aIntersections[1] = LineStart + Delta * Time2;
306 return a.
x * b.
x + a.
y * b.
y + a.
z * b.
z;
313 a.
y * b.
z - a.
z * b.
y,
314 a.
z * b.
x - a.
x * b.
z,
315 a.
x * b.
y - a.
y * b.
x);
321 return std::sqrt(
dot(a, a));
326 float divisor =
length(v);
329 float l = 1.0f / divisor;
362 x(nx),
y(ny),
z(nz),
w(nw)
constexpr bool operator!=(const vector2_base &vec) const
Definition vmath.h:78
constexpr vector2_base operator*(const T rhs) const
Definition vmath.h:35
constexpr vector2_base operator*(const vector2_base &vec) const
Definition vmath.h:36
constexpr vector2_base operator+(const vector2_base &vec) const
Definition vmath.h:34
constexpr vector2_base(T nx, T ny)
Definition vmath.h:27
constexpr vector2_base operator/(const vector2_base &vec) const
Definition vmath.h:38
constexpr vector2_base operator-() const
Definition vmath.h:32
constexpr const T & operator[](const int index) const
Definition vmath.h:81
constexpr vector2_base & operator/=(const T rhs)
Definition vmath.h:64
constexpr vector2_base & operator*=(const vector2_base &vec)
Definition vmath.h:58
constexpr vector2_base & operator-=(const vector2_base &vec)
Definition vmath.h:46
constexpr bool operator==(const vector2_base &vec) const
Definition vmath.h:77
constexpr vector2_base()=default
constexpr vector2_base & operator*=(const T rhs)
Definition vmath.h:52
constexpr vector2_base operator-(const vector2_base &vec) const
Definition vmath.h:33
constexpr vector2_base operator/(const T rhs) const
Definition vmath.h:37
constexpr vector2_base & operator/=(const vector2_base &vec)
Definition vmath.h:70
constexpr T & operator[](const int index)
Definition vmath.h:80
constexpr vector2_base & operator+=(const vector2_base &vec)
Definition vmath.h:40
T z
Definition vmath.h:233
constexpr vector3_base()=default
constexpr vector3_base & operator+=(const vector3_base &vec)
Definition vmath.h:250
constexpr vector3_base operator*(const T rhs) const
Definition vmath.h:245
constexpr vector3_base operator-(const vector3_base &vec) const
Definition vmath.h:242
T x
Definition vmath.h:225
constexpr vector3_base & operator/=(const T rhs)
Definition vmath.h:278
constexpr bool operator==(const vector3_base &vec) const
Definition vmath.h:293
constexpr vector3_base & operator-=(const vector3_base &vec)
Definition vmath.h:257
T y
Definition vmath.h:229
constexpr vector3_base & operator/=(const vector3_base &vec)
Definition vmath.h:285
T s
Definition vmath.h:229
T v
Definition vmath.h:229
T r
Definition vmath.h:225
constexpr vector3_base operator/(const T rhs) const
Definition vmath.h:247
T g
Definition vmath.h:229
constexpr vector3_base operator/(const vector3_base &vec) const
Definition vmath.h:248
constexpr vector3_base & operator*=(const T rhs)
Definition vmath.h:264
T u
Definition vmath.h:225
constexpr bool operator!=(const vector3_base &vec) const
Definition vmath.h:294
constexpr vector3_base operator+(const vector3_base &vec) const
Definition vmath.h:244
constexpr vector3_base operator*(const vector3_base &vec) const
Definition vmath.h:246
T w
Definition vmath.h:233
T b
Definition vmath.h:233
constexpr vector3_base & operator*=(const vector3_base &vec)
Definition vmath.h:271
T h
Definition vmath.h:225
constexpr vector3_base operator-() const
Definition vmath.h:243
T l
Definition vmath.h:233
constexpr vector3_base(T nx, T ny, T nz)
Definition vmath.h:237
T g
Definition vmath.h:349
constexpr vector4_base & operator/=(const vector4_base &vec)
Definition vmath.h:414
T w
Definition vmath.h:357
constexpr bool operator!=(const vector4_base &vec) const
Definition vmath.h:424
T b
Definition vmath.h:353
T s
Definition vmath.h:349
T r
Definition vmath.h:345
T h
Definition vmath.h:345
constexpr vector4_base operator+(const vector4_base &vec) const
Definition vmath.h:366
T z
Definition vmath.h:353
constexpr vector4_base operator/(const vector4_base &vec) const
Definition vmath.h:371
constexpr vector4_base & operator/=(const T rhs)
Definition vmath.h:406
constexpr vector4_base operator-(const vector4_base &vec) const
Definition vmath.h:367
constexpr vector4_base(T nx, T ny, T nz, T nw)
Definition vmath.h:361
constexpr vector4_base & operator*=(const vector4_base &vec)
Definition vmath.h:398
T y
Definition vmath.h:349
T l
Definition vmath.h:353
constexpr vector4_base & operator*=(const T rhs)
Definition vmath.h:390
constexpr vector4_base()=default
constexpr vector4_base operator*(const T rhs) const
Definition vmath.h:370
T a
Definition vmath.h:357
constexpr vector4_base operator/(const T vec) const
Definition vmath.h:372
constexpr vector4_base & operator+=(const vector4_base &vec)
Definition vmath.h:374
constexpr vector4_base & operator-=(const vector4_base &vec)
Definition vmath.h:382
constexpr vector4_base operator*(const vector4_base &vec) const
Definition vmath.h:369
T x
Definition vmath.h:345
constexpr vector4_base operator-() const
Definition vmath.h:368
constexpr bool operator==(const vector4_base &vec) const
Definition vmath.h:423
static SHA256_DIGEST s(const char *pSha256)
Definition mapbugs.cpp:37
constexpr float pi
Definition math.h:14
float random_angle()
Definition math.h:76
vector4_base< int > ivec4
Definition vmath.h:429
constexpr float angle(const vector2_base< float > &a)
Definition vmath.h:122
vector2_base< float > normalize(const vector2_base< float > &v)
Definition vmath.h:142
vector4_base< uint8_t > ubvec4
Definition vmath.h:430
constexpr float length_squared(const vector2_base< float > &a)
Definition vmath.h:117
constexpr vector3_base< T > cross(const vector3_base< T > &a, const vector3_base< T > &b)
Definition vmath.h:310
vector2_base< float > direction(float angle)
Definition vmath.h:151
float length(const vector2_base< T > &a)
Definition vmath.h:106
vector4_base< bool > bvec4
Definition vmath.h:428
vector3_base< float > vec3
Definition vmath.h:333
vector4_base< float > vec4
Definition vmath.h:427
vector2_base< int > ivec2
Definition vmath.h:163
vector3_base< int > ivec3
Definition vmath.h:335
constexpr int intersect_line_circle(const vec2 LineStart, const vec2 LineEnd, const vec2 CircleCenter, float Radius, vec2 aIntersections[2])
Definition vmath.h:182
vector2_base< bool > bvec2
Definition vmath.h:162
vector2_base< float > random_direction()
Definition vmath.h:156
vector3_base< bool > bvec3
Definition vmath.h:334
constexpr vector2_base< T > rotate(const vector2_base< T > &a, float angle)
Definition vmath.h:85
vector2_base< float > vec2
Definition vmath.h:161
constexpr vector2_base< T > normalize_pre_length(const vector2_base< T > &v, T len)
Definition vmath.h:135
constexpr bool closest_point_on_line(vector2_base< T > line_pointA, vector2_base< T > line_pointB, vector2_base< T > target_point, vector2_base< T > &out_pos)
Definition vmath.h:166
constexpr T dot(const vector2_base< T > a, const vector2_base< T > &b)
Definition vmath.h:100
T distance(const vector2_base< T > a, const vector2_base< T > &b)
Definition vmath.h:94