f32 x, y;
};
-V2f v2f_add (V2f a, V2f b);
-V2f v2f_sub (V2f a, V2f b);
-V2f v2f_mul (V2f a, f32 scalar);
+V2f operator+(V2f a, V2f b);
+V2f operator-(V2f a, V2f b);
+V2f operator*(V2f a, f32 scalar);
f32 v2f_dot (V2f a, V2f b);
f32 v2f_smag(V2f a);
f32 v2f_mag (V2f a);
#include "utils.h"
V2f
-v2f_add(V2f a, V2f b)
+operator+(V2f a, V2f b)
{
return (V2f) { .x = a.x + b.x, .y = a.y + b.y };
}
V2f
-v2f_sub(V2f a, V2f b)
+operator-(V2f a, V2f b)
{
return (V2f) { .x = a.x - b.x, .y = a.y - b.y };
}
V2f
-v2f_mul(V2f a, f32 scalar)
+operator*(V2f a, f32 scalar)
{
return (V2f) { .x = a.x * scalar, .y = a.y * scalar };
}
v2f_norm(V2f a)
{
const f32 mag = v2f_mag(a);
- return v2f_mul(a, 1.0f / mag);
+ return a * (1.0f / mag);
}
V2f
v2f_proj(V2f a, V2f onto)
{
const f32 dp = v2f_dot(a, onto) / v2f_mag(onto);
- return v2f_mul(onto, dp);
+ return onto * dp;
}
(*out)[row * 4 + col] = 0.0f;
foreach(i, 0, 4) {
- (*out)[row * 4 + col] += a[row * 4 + i] + b[i * 4 + col];
+ (*out)[row * 4 + col] += a[row * 4 + i] * b[i * 4 + col];
}
}
}