aboutsummaryrefslogtreecommitdiff
path: root/code/handmade_math.h
diff options
context:
space:
mode:
Diffstat (limited to 'code/handmade_math.h')
-rw-r--r--code/handmade_math.h134
1 files changed, 134 insertions, 0 deletions
diff --git a/code/handmade_math.h b/code/handmade_math.h
new file mode 100644
index 0000000..98b2328
--- /dev/null
+++ b/code/handmade_math.h
@@ -0,0 +1,134 @@
+/* date = June 10th 2025 1:05 pm */
+
+#ifndef HANDMADE_MATH_H
+#define HANDMADE_MATH_H
+
+
+union v2
+{
+ struct
+ {
+ r32 X, Y;
+ };
+ r32 E[2];
+};
+
+inline v2
+V2(r32 X, r32 Y)
+{
+ v2 Result;
+
+ Result.X = X;
+ Result.Y = Y;
+
+ return(Result);
+}
+
+inline v2
+operator-(v2 A)
+{
+ v2 Result;
+
+ Result.X = -A.X;
+ Result.Y = -A.Y;
+
+ return Result;
+}
+
+inline v2
+operator+(v2 A, v2 B)
+{
+ v2 Result;
+
+ Result.X = A.X + B.X;
+ Result.Y = A.Y + B.Y;
+
+ return Result;
+}
+
+inline v2
+operator+(v2 A, r32 B)
+{
+ v2 Result;
+
+ Result.X = A.X + B;
+ Result.Y = A.Y + B;
+
+ return Result;
+}
+
+inline v2
+operator-(v2 A, v2 B)
+{
+ v2 Result;
+
+ Result.X = A.X - B.X;
+ Result.Y = A.Y - B.Y;
+
+ return Result;
+}
+
+inline v2
+operator*(r32 A, v2 B)
+{
+ v2 Result;
+
+ Result.X = A*B.X;
+ Result.Y = A*B.Y;
+
+ return Result;
+}
+
+inline v2
+operator*(v2 A, r32 B)
+{
+ return B*A;
+}
+
+inline v2
+operator/(v2 A, r32 B)
+{
+ v2 Result;
+
+ Result.X = A.X/B;
+ Result.Y = A.Y/B;
+
+ return Result;
+}
+
+inline v2 &
+operator*=(v2 &A, r32 B)
+{
+ A = B * A;
+ return A;
+}
+
+inline v2 &
+operator+=(v2 &A, v2 B)
+{
+ A = A + B;
+ return A;
+}
+
+inline
+r32 Square(r32 A)
+{
+ r32 Result = A*A;
+ return Result;
+}
+
+inline
+r32 Inner(v2 A, v2 B)
+{
+ r32 Result = A.X*B.X + A.Y*B.Y;
+ return Result;
+}
+
+inline
+r32 LengthSq(v2 A)
+{
+ r32 Result = Inner(A, A);
+ return Result;
+}
+
+#endif //HANDMADE_MATH_H