#ifndef HANDMADE_MATH_H #define HANDMADE_MATH_H // TODO: Make these static. struct v2 { float X, Y; float E[2]; }; struct v2 V2(float X, float Y) { struct v2 Result; Result.X = X; Result.Y = Y; return Result; } struct v2 V2Multiply(float A, struct v2 B) { struct v2 Result; Result.X = A * B.X; Result.Y = A * B.Y; return Result; } struct v2 V2Unary(struct v2 A) { struct v2 Result; Result.X = -A.X; Result.Y = -A.Y; return Result; } struct v2 V2Add(struct v2 A, struct v2 B) { struct v2 Result; Result.X = A.X + B.X; Result.Y = A.Y + B.Y; return Result; } struct v2 V2Subtract(struct v2 A, struct v2 B) { struct v2 Result; Result.X = A.X - B.X; Result.Y = A.Y - B.Y; return Result; } float Square(float A) { float Result; Result = A * A; return Result; } float InnerProduct(struct v2 A, struct v2 B) { float Result = A.X*B.X + A.Y*B.Y; return Result; } float LengthSq(struct v2 A) { float Result = InnerProduct(A, A); return Result; } #endif